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