יצירת ממשקי API של RESTful ב-Django עם Django REST Framework

Django REST Framework (DRF) הוא ערכת כלים חזקה וגמישה לבניית ממשקי API לאינטרנט. זה מפשט את התהליך של יצירת ממשקי API של RESTful, ומספק תכונות כמו סדרות, ערכות צפייה ומנגנוני אימות מחוץ לקופסה.

הגדרת Django REST Framework

לפני שתוכל ליצור ממשק API של RESTful, עליך להתקין את Django REST Framework ולהוסיף אותו לפרויקט שלך. הפעל את הפקודה הבאה כדי להתקין DRF:

pip install djangorestframework

לאחר מכן, הוסף את 'rest_framework' ל-INSTALLED_APPS בקובץ settings.py שלך:

INSTALLED_APPS = [
    ...,
    'rest_framework',
]

יצירת ממשק API פשוט

בואו ניצור API עבור מודל פשוט שנקרא Book. השלב הראשון הוא להגדיר את המודל ב-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

לאחר הגדרת המודל, הפעל העברות ליצירת טבלת מסד הנתונים:

python manage.py makemigrations
python manage.py migrate

יצירת סדרה

סדרות ב-DRF ממירים סוגי נתונים מורכבים כמו דגמי Django ל-JSON. צור סדרה לדגם Book:

from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = '__all__'

בניית תצוגות וכתובות URL

DRF מספק שתי דרכים עיקריות ליצירת תצוגות API: תצוגות מבוססות פונקציות ותצוגות מבוססות כיתה. כאן אנו משתמשים בתצוגות מבוססות כיתה עם 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)

לאחר מכן, הגדר את כתובות האתרים עבור תצוגה זו ב-urls.py:

from django.urls import path
from .views import BookListCreateAPIView

urlpatterns = [
    path('books/', BookListCreateAPIView.as_view(), name='book-list-create'),
]

בדיקת ה-API

כשהשרת פועל, אתה יכול לבדוק את ה-API בכתובת http://127.0.0.1:8000/books/ באמצעות כלים כמו Postman או curl. בקשת GET מאחזרת את כל הספרים, ובקשת POST מאפשרת לך ליצור ספר חדש.

שיפור ה-API עם ViewSets

לקוד תמציתי יותר וניתן לשימוש חוזר, אתה יכול להשתמש ב-ViewSet ו-ראוטר של DRF. הנה איך לעדכן את ה-API לשימוש ב-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

לאחר מכן, הגדר את הנתב ב-urls.py:

from rest_framework.routers import DefaultRouter
from .views import BookViewSet

router = DefaultRouter()
router.register(r'books', BookViewSet, basename='book')

urlpatterns = router.urls

מַסְקָנָה

Django REST Framework מקל על יצירת ממשקי API חזקים וגמישים של RESTful. על ידי שימוש בסריאלייזרים, תצוגות ונתבים, אתה יכול לבנות ממשקי API המטפלים במודלים מורכבים של נתונים בקלות. עם הבסיס הזה, כעת תוכל לחקור תכונות מתקדמות כמו הרשאות מותאמות אישית, עימוד ואימות ב-DRF.