Membuat API RESTful di Django dengan Django REST Framework
Django REST Framework (DRF) adalah perangkat yang kuat dan fleksibel untuk membangun API web. Perangkat ini menyederhanakan proses pembuatan API RESTful, menyediakan fitur-fitur seperti serializer, viewset, dan mekanisme autentikasi secara langsung.
Menyiapkan Kerangka Kerja Django REST
Sebelum Anda dapat membuat RESTful API, Anda perlu menginstal Django REST Framework dan menambahkannya ke proyek Anda. Jalankan perintah berikut untuk menginstal DRF:
pip install djangorestframework
Lalu, tambahkan 'rest_framework' ke INSTALLED_APPS
di file settings.py
Anda:
INSTALLED_APPS = [
...,
'rest_framework',
]
Membuat API Sederhana
Mari kita buat API untuk model sederhana yang disebut Book
. Langkah pertama adalah mendefinisikan model di models.py
:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
published_date = models.DateField()
isbn = models.CharField(max_length=13)
def __str__(self):
return self.title
Setelah mendefinisikan model, jalankan migrasi untuk membuat tabel database:
python manage.py makemigrations
python manage.py migrate
Membuat Serializer
Serializer dalam DRF mengonversi tipe data kompleks seperti model Django menjadi JSON. Buat serializer untuk model Book
:
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
Membangun Tampilan dan URL
DRF menyediakan dua cara utama untuk membuat tampilan API: tampilan berbasis fungsi dan tampilan berbasis kelas. Di sini, kami menggunakan tampilan berbasis kelas dengan APIView
:
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Book
from .serializers import BookSerializer
class BookListCreateAPIView(APIView):
def get(self, request):
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
def post(self, request):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Berikutnya, konfigurasikan URL untuk tampilan ini di urls.py
:
from django.urls import path
from .views import BookListCreateAPIView
urlpatterns = [
path('books/', BookListCreateAPIView.as_view(), name='book-list-create'),
]
Menguji API
Dengan server yang berjalan, Anda dapat menguji API di http://127.0.0.1:8000/books/
menggunakan alat seperti Postman atau curl. Permintaan GET mengambil semua buku, dan permintaan POST memungkinkan Anda membuat buku baru.
Meningkatkan API dengan ViewSets
Untuk kode yang lebih ringkas dan dapat digunakan kembali, Anda dapat menggunakan ViewSet
dan Router
dari DRF. Berikut cara memperbarui API untuk menggunakan ModelViewSet
:
from rest_framework.viewsets import ModelViewSet
from .models import Book
from .serializers import BookSerializer
class BookViewSet(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
Kemudian, konfigurasikan router di urls.py
:
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r'books', BookViewSet, basename='book')
urlpatterns = router.urls
Kesimpulan
Kerangka Kerja Django REST memudahkan pembuatan API RESTful yang tangguh dan fleksibel. Dengan menggunakan serializer, tampilan, dan router, Anda dapat membuat API yang menangani model data kompleks dengan mudah. Dengan fondasi ini, kini Anda dapat menjelajahi fitur-fitur canggih seperti izin khusus, pagination, dan autentikasi di DRF.