יצירת ממשקי 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.