إنشاء واجهات برمجة تطبيقات RESTful في Django باستخدام إطار عمل Django REST

إطار عمل Django REST (DRF) عبارة عن مجموعة أدوات قوية ومرنة لبناء واجهات برمجة تطبيقات الويب. فهو يبسط عملية إنشاء واجهات برمجة تطبيقات RESTful، ويوفر ميزات مثل المسلسلات ومجموعات العرض وآليات المصادقة الجاهزة للاستخدام.

إعداد إطار عمل Django REST

قبل أن تتمكن من إنشاء واجهة برمجة تطبيقات RESTful، تحتاج إلى تثبيت إطار عمل Django REST وإضافته إلى مشروعك. قم بتشغيل الأمر التالي لتثبيت DRF:

pip install djangorestframework

بعد ذلك، أضف 'rest_framework' إلى INSTALLED_APPS في ملف settings.py:

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

إنشاء واجهة برمجة تطبيقات بسيطة

لنقم بإنشاء واجهة برمجة تطبيقات لنموذج بسيط يسمى 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)

بعد ذلك، قم بتكوين عناوين URL لهذا العرض في urls.py:

from django.urls import path
from .views import BookListCreateAPIView

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

اختبار واجهة برمجة التطبيقات (API)

مع تشغيل الخادم، يمكنك اختبار واجهة برمجة التطبيقات على http://127.0.0.1:8000/books/ باستخدام أدوات مثل Postman أو curl. يقوم طلب GET باسترداد جميع الكتب، ويسمح لك طلب POST بإنشاء كتاب جديد.

تحسين واجهة برمجة التطبيقات باستخدام ViewSets

للحصول على كود أكثر إيجازًا وقابلية لإعادة الاستخدام، يمكنك استخدام ViewSet وRouter من DRF. وإليك كيفية تحديث واجهة برمجة التطبيقات لاستخدام 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 من السهل إنشاء واجهات برمجة تطبيقات RESTful قوية ومرنة. باستخدام المسلسلات والعروض وأجهزة التوجيه، يمكنك إنشاء واجهات برمجة تطبيقات تتعامل مع نماذج البيانات المعقدة بسهولة. باستخدام هذا الأساس، يمكنك الآن استكشاف الميزات المتقدمة مثل الأذونات المخصصة والترقيم والمصادقة في DRF.