Django REST Framework ile Django'da RESTful API'ler Oluşturma
Django REST Framework (DRF), web API'leri oluşturmak için güçlü ve esnek bir araç takımıdır. Serileştiriciler, görünüm kümeleri ve kimlik doğrulama mekanizmaları gibi özellikleri kullanıma hazır olarak sunarak RESTful API'leri oluşturma sürecini basitleştirir.
Django REST Çerçevesini Kurma
Bir RESTful API oluşturmadan önce, Django REST Framework'ü yüklemeniz ve projenize eklemeniz gerekir. DRF'yi yüklemek için aşağıdaki komutu çalıştırın:
pip install djangorestframeworkDaha sonra settings.py dosyanızdaki INSTALLED_APPS dizinine 'rest_framework' ekleyin:
INSTALLED_APPS = [
...,
'rest_framework',
]Basit Bir API Oluşturma
Book adlı basit bir model için bir API oluşturalım. İlk adım, modeli models.py: içinde tanımlamaktır.
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.titleModeli tanımladıktan sonra veritabanı tablosunu oluşturmak için geçişleri çalıştırın:
python manage.py makemigrations
python manage.py migrateBir Serileştirici Oluşturma
DRF'deki serileştiriciler, Django modelleri gibi karmaşık veri tiplerini JSON'a dönüştürür. Book modeli için bir serileştirici oluşturun:
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'Bina Görünümleri ve URL'ler
DRF, API görünümleri oluşturmak için iki ana yol sağlar: fonksiyon tabanlı görünümler ve sınıf tabanlı görünümler. Burada, APIView: ile sınıf tabanlı görünümleri kullanırız.
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)Daha sonra, bu görünüm için URL'leri urls.py: dosyasında yapılandırın:
from django.urls import path
from .views import BookListCreateAPIView
urlpatterns = [
path('books/', BookListCreateAPIView.as_view(), name='book-list-create'),
]API'yi test etme
Sunucu çalışırken, Postman veya curl gibi araçları kullanarak API'yi http://127.0.0.1:8000/books/ adresinde test edebilirsiniz. Bir GET isteği tüm kitapları alır ve bir POST isteği yeni bir kitap oluşturmanıza olanak tanır.
API'yi ViewSet'lerle geliştirme
Daha öz ve yeniden kullanılabilir kod için DRF'nin ViewSet ve Router'sını kullanabilirsiniz. API'yi ModelViewSet kullanacak şekilde güncellemenin yolu:
from rest_framework.viewsets import ModelViewSet
from .models import Book
from .serializers import BookSerializer
class BookViewSet(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializerDaha sonra urls.py: dosyasında yönlendiriciyi yapılandırın:
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r'books', BookViewSet, basename='book')
urlpatterns = router.urlsÇözüm
Django REST Framework, sağlam ve esnek RESTful API'ler oluşturmayı kolaylaştırır. Serileştiriciler, görünümler ve yönlendiriciler kullanarak karmaşık veri modellerini kolaylıkla işleyen API'ler oluşturabilirsiniz. Bu temelle artık DRF'de özel izinler, sayfalama ve kimlik doğrulama gibi gelişmiş özellikleri keşfedebilirsiniz.