DRF and It’s Easiest Way To Build REST API Service

Fachrur Rozi
Sulang
Published in
2 min readMar 8, 2018

Pada kesempatan kali ini, saya akan membahas sedikit mengenai step-by-step membuat suatu REST API service dengan Django Rest Framework.

Django Rest Framework atau biasa disingkat dengan DRF adalah sebuah framework yang dibangun di atas framework Django. DRF mengubah paradigma pemograman Django yang biasanya MVC (Model View Controller) menjadi microservices atau API service.

Proses installasi DRF dapat dilihat di sini

Kali ini saya akan membuat contoh API sederhana yang mensimulasikan proses CRUD entitas book.

Permodelan models.py sebagai berikut:

from django.db import modelsclass Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
stock = models.IntegerField(default=0)

Setelah selesai membuat model kita membutuhkan sebuah serializer yang nantinya akan mengubah model kita menjadi object Json.

serializer ditempatkan di serializers.py

from rest_framework import serializers
from models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('title', 'author', 'stock')

Selanjutnya kita harus membuat views.py untuk menampilkan hasil API yang telah dibuat.

from rest_framework import generics
from serializer import BookSerializer
from models import Book
class ListCreateBookView(generics.ListCreateAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializer

class view di atas adalah view untuk melakukan create book (POST) dan menampilkan list book (GET).

Ya, untuk membuat fitur POST dan GET hanya membutuhkan dua baris kode.
Hal ini bisa dilakukan karena kita meng-extends class generics view dari DRF.
Class generics ini menyederhanakan kode yang biasa dilakukan ketika membuat CRUD:

def get(self, request, *args):
. . .
def post(self, request, *args):
. . .
def update(self, request, *args):
. . .
def delete(self, request, *args):
. . .

menjadi:

class ListCreateBookView(generics.ListCreateAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializer

Class generics secara deklaratif membuat kode yang redundant menjadi sederhana.

Jika kita ingin memodifikasi atau memberikan kondisi pada kelas generics, kita dapat meng-overide fungsi-fungsi get, post, update, delete tadi.

class ListCreateBookView(generics.ListCreateAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializer
def post(self, request, *args):
. . .
# condition
. . .

Selanjutnya tinggal menambahkan view yang telah dibuat ke url project kita.

Terima kasih telah membaca, semoga bermanfaat.

--

--