10 Year Record Of BTSRekam jejak resmi yang pertama, masa muda mereka, 'The Most Beautiful Moment in Life'. Ulasan mendalam yang ditulis selama lebih dari 3 tahun, dalam wawancara bersama Myeongseok Kang, BTS berbagi kisah personal di balik layar dari perjalanan mereka selama ini. Buy |
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 :
[
{
"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
},
]
urlpatterns = [path('api/v1/property/',views.Property145Listings.as_view(), name='property-listings'),
]
from rest_framework import serializersclass 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.
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
)
postman get data serializer
postman post data serializer
Github : https://github.com/halovina/sampleserializer
Video :