Django Rest Framework (DRF) menyediakan beberapa jenis views yang dapat digunakan untuk membangun API, masing-masing dengan kegunaan dan tingkat abstraksi yang berbeda. Memahami perbedaan di antara mereka akan membantu Anda memilih pendekatan yang paling sesuai dengan kebutuhan proyek Anda. Berikut adalah gambaran umum dari beberapa jenis view yang paling umum digunakan dalam DRF:
APIView
- Tingkat Abstraksi: Rendah
- Kegunaan:
APIView
adalah kelas dasar untuk semua view di DRF dan memberikan fungsionalitas dasar untuk menangani request HTTP. Ini memungkinkan kontrol penuh atas logika view Anda, termasuk cara request diproses dan bagaimana respons dikembalikan. - Skenario Penggunaan: Cocok untuk kasus penggunaan yang sangat khusus di mana Anda perlu logika khusus yang tidak ditangani oleh view generik atau viewsets.
GenericAPIView
- Tingkat Abstraksi: Menengah
- Kegunaan:
GenericAPIView
memperluasAPIView
dengan menambahkan fungsionalitas umum yang dibutuhkan untuk mengakses dan memanipulasi data model. Hal ini termasuk penanganan querysets dan serialisasi data. Namun, Anda masih perlu menentukan metode untuk tindakan HTTP tertentu (sepertiget
,post
, dll.). - Skenario Penggunaan: Cocok saat Anda ingin memanfaatkan beberapa fungsionalitas bawaan untuk interaksi dengan model tetapi tetap memerlukan kontrol atas metode HTTP tertentu.
Mixins
- Tingkat Abstraksi: Menengah-Tinggi
- Kegunaan: Mixins seperti
ListModelMixin
,CreateModelMixin
,RetrieveModelMixin
,UpdateModelMixin
, danDestroyModelMixin
memberikan implementasi untuk operasi CRUD standar. Mereka dirancang untuk digunakan denganGenericAPIView
untuk memperkaya view dengan tindakan spesifik. - Skenario Penggunaan: Sangat berguna ketika Anda membutuhkan operasi CRUD standar pada objek model dan ingin mengurangi jumlah kode boilerplate.
Generic Views
- Tingkat Abstraksi: Tinggi
- Kegunaan: Generic views seperti
ListAPIView
,RetrieveAPIView
,CreateAPIView
,DestroyAPIView
, danUpdateAPIView
menggabungkanGenericAPIView
dengan satu atau lebih mixins untuk menyediakan view siap pakai untuk tindakan CRUD umum. - Skenario Penggunaan: Ideal untuk kasus di mana Anda membutuhkan implementasi standar dari operasi CRUD tanpa perlu menulis banyak kode kustom.
ViewSets
- Tingkat Abstraksi: Sangat Tinggi
- Kegunaan:
ViewSet
mengabstraksi kumpulan operasi yang berkaitan dengan model tertentu menjadi satu kelas.ModelViewSet
khususnya, menggabungkan fungsionalitas dari semua mixins CRUD untuk menyediakan satu kelas yang menangani semua operasi CRUD standar. - Skenario Penggunaan: Cocok untuk kasus di mana Anda ingin API yang sepenuhnya CRUD dengan kode minimal.
ViewSets
sangat berguna ketika digunakan bersama denganRouter
DRF, yang otomatis menghasilkan URL berdasarkan konvensi.
Masing-masing jenis view ini menawarkan tingkat fleksibilitas dan kenyamanan yang berbeda. Memilih antara mereka bergantung pada kebutuhan spesifik proyek Anda, seberapa banyak kontrol khusus yang Anda perlukan, dan seberapa banyak kode boilerplate yang ingin Anda kurangi.
Referensi
https://www.django-rest-framework.org/api-guide/views/
https://www.django-rest-framework.org/api-guide/generic-views/
https://www.django-rest-framework.org/api-guide/viewsets/