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.