Penjelasan Sederhana Tentang Serializer Django Rest

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Penjelasan Sederhana Tentang Serializer Django Rest

Serialization adalah suatu proses mengubah objek menjadi byte stream, agar bisa disimpan dalam file, memori ataupun dalam proses transmisi data.

Serializer memungkinkan data yang kompleks seperti queryset  dapat dikonversi ke tipe data Python, yang kemudian bisa dengan mudah dirender menjadi JSON, XML atau tipe data lainnya.

Serializer juga menyediakan deserialisasi yang memungkinkan data diurai dan dikonversi kembali menjadi tipe data yang lebih kompleks, setelah terlebih dahulu memvalidasi data yang masuk.

Serialisator dalam kerangka kerja REST sangat mirip dengan kelas Form dan ModelForm Django.

Django menyediakan kelas Serializer yang memberi Anda cara yang kuat dan generik untuk mengontrol input dari data yang dikirim oleh service client.

Selain itu kelas ModelSerializer juga menyediakan jalan pintas yang berhubungan dengan instance model dan querysets.

Kembali kepokok bahasan kita tentang serializer, serializer ibarat petugas imigrasi yang menyeleksi boleh tidaknya sesorang untuk masuk kesebuah negara.

Sebelum masuk kesebuah negara seseorang harus lengkap dulu persyaratan seperti pasport, visa dan dokumen terkait lainya, demikianlah gambaran tentang serializer.

Serializer akan memvalidasi data yang masuk, apakah sesuai dengan requirement atau tidak, jika ada yang tidak sesuai serializer akan memberikan informasi sebuah pesan error.

Studi kasus pada tutorial kali ini, kita akan membuat sebuah RestApi yang menampilkan listing property, dengan method GET dan POST. Perhatikan table of content di bawah ini :


  • Data Source

  • url

  • Class Serializer

  • Get dan Post Data

  • Test Data


Data Source


sebagai bahan pembelajaran perhatikan data listing property dibawah ini.

[
{
"id":1,
"title":"Rumah murah di cilejit",
"content":"Kota baru dengan area hijau dan ruang terbuka lebih dari 30% dan danau seluas 20 hektar. Modernland Cilejit menawarkan keseimbangan hidup bersama keluarga dan orang terkasih dengan fasilitas Water Park, Theme Park, dan Edu Park. Modernland Cilejit juga menawarkan kemudahan sehari-hari dengan akses langsung ke KRL Cilejit.",
"host":"property145.com",
"type_property":"rumah",
"harga":192000000

},
{
"id":2,
"title":"Apartemen Urbantown Serpong Tower 2 ",
"content":"URBANTOWN - Serpong berlokasi di area segitiga emas Tangerang Selatan tepatnya jalan Sarua, dekat dengan BSD & Serpong sebagai Commercial and Lifestyle Area. Memiliki hunian di URBANtown - Serpong menjadikan nilai Investasi yang menguntungkan.",
"host":"property145.com",
"type_property":"Apartemen",
"harga":220000000
},
]

URL



urlpatterns = [

path('api/v1/property/',views.Property145Listings.as_view(), name='property-listings'),

]



Serializer


Dari list sample data diatas, buat sebuah class serializer, perhatikan kode di bawah ini:

from rest_framework import serializers

class RumahSerializer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField(max_length=200)
content = serializers.CharField(max_length=500)
host = serializers.CharField(max_length=50)
type_property = serializers.CharField(max_length=20)
harga = serializers.IntegerField()

Setiap object memiliki type data seperti integer dan string, ini adalah salah satu cara untuk memfilter data yang masuk melalui method post.

Get dan Post Data


Buat sebuah class untuk memproses GET dan POST data, perhatikan kode dibawah ini

class Property145Listings(APIView):
parser_classes = (JSONParser,)
renderer_classes = (JSONRenderer,)

def get(self, request, format=None):
serializer = RumahSerializer(listing_property, many=True)
return Response(JSONRenderer().render(serializer.data),content_type="application/json", status=200)

def post(self, request, format=None):
serializer = RumahSerializer(
data=request.data
)
if not serializer.is_valid():
return Response(data=serializer.errors, status=400)

data = serializer.validated_data.get
message = "data not found"
try:
id=data('id')
for x in listing_property:
if x['id'] == id:
message = "data found"

except Exception as e:
return Response(
data={'errors': str(e)}, status=404
)
return Response(
data={'message': message}, status=200
)

Test Data


Untuk melakukan testing kamu bisa memanfaatkan postman

postman get data serialize postman get data serializer

postman post data serializer postman post data serializer

 

Github : https://github.com/halovina/sampleserializer

Video :

Baca artikel lainya :