
روز ۴۶: ساخت API ساده در جنگو با Django REST Framework
با گسترش روز افزون وب و اپلیکیشن های موبایل، نیاز به APIهای قابل دسترس و سریع بیش از پیش احساس میشود. Django REST Framework (DRF) به توسعهدهندگان جنگو این امکان را میدهد تا APIهای حرفهای و امن بسازند و دادهها را به فرمت JSON ارائه دهند. در این بخش، هدف ما ایجاد یک API ساده برای مدیریت مقالات است که بتوان دادهها را خواند، اضافه کرد، ویرایش کرد و حذف کرد. شروع کار با DRF نیازمند نصب کتابخانه، تنظیم Serializer، ایجاد View و تعریف مسیرهای URL است تا API آماده استفاده شود و بتوان از آن در پروژههای واقعی بهره برد.
آمادهسازی پروژه و نصب DRF
برای شروع، ابتدا باید Django REST Framework را نصب کنیم. استفاده از pip سادهترین روش است و کافی است دستور زیر را در ترمینال اجرا کنیم:
pip install djangorestframework
پس از نصب، نیاز است DRF را به پروژه جنگو اضافه کنیم. برای این کار در فایل settings.py بخش INSTALLED_APPS را ویرایش میکنیم و 'rest_framework' را اضافه میکنیم. این کار باعث میشود امکانات DRF مانند Viewها، Serializerها، و ابزارهای پیشرفته مدیریت Authentication و Permission در پروژه فعال شوند و بتوانیم به راحتی APIهای مورد نیاز خود را ایجاد کنیم. رعایت این مراحل پایه، گام نخست برای ساخت APIهای حرفهای و مقیاسپذیر است.
تعریف مدلها و Serializer
برای ساخت API ابتدا باید مدل دادهای خود را تعریف کنیم. فرض کنید یک مدل Article داریم که شامل فیلدهای عنوان، محتوا و تاریخ ایجاد است:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.titleپس از تعریف مدل، باید Serializer آن را بسازیم. Serializer دادهها را به فرمت JSON تبدیل میکند و امکان اعتبارسنجی ورودیها را فراهم میکند:
from rest_framework import serializers
from .models import Article
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ['id', 'title', 'content', 'created_at']این مرحله بسیار مهم است، زیرا Serializer نقطه اتصال بین دادههای مدل و خروجی JSON API است و با استفاده از آن میتوان دادهها را اعتبارسنجی و مدیریت کرد.
ایجاد View ساده با DRF
بعد از تعریف Serializer، نوبت به ایجاد View میرسد. برای این API از کلاسهای از پیش آماده DRF استفاده میکنیم تا عملیات CRUD را به سادهترین شکل ممکن پیادهسازی کنیم:
from rest_framework import generics
from .models import Article
from .serializers import ArticleSerializer
class ArticleListCreateView(generics.ListCreateAPIView):
queryset = Article.objects.all()
serializer_class = ArticleSerializerاین View هم امکان دریافت لیست مقالات (GET) و هم امکان ایجاد مقاله جدید (POST) را فراهم میکند. در واقع با استفاده از Viewهای از پیش ساخته DRF میتوان بدون نوشتن کد زیاد، APIهای کاملاً عملیاتی ایجاد کرد.
تعریف مسیرهای URL
پس از ایجاد View باید آن را به URL متصل کنیم تا کاربران و کلاینتها بتوانند به API دسترسی پیدا کنند. در فایل urls.py اپ خود، مسیر زیر را تعریف میکنیم:
from django.urls import path
from .views import ArticleListCreateView
urlpatterns = [
path('api/articles/', ArticleListCreateView.as_view(), name='article-list-create'),
]با این تعریف، مسیر /api/articles/ آماده دریافت درخواستهای GET و POST است. این مرحله یکی از کلیدیترین بخشهاست، زیرا URLها نقطه ورود به API هستند و طراحی صحیح آنها تاثیر مستقیم بر تجربه کاربری و توسعه پروژه دارد.
تست API با ابزارهای خارجی
پس از پیادهسازی، تست API اهمیت بالایی دارد. میتوان از ابزارهایی مانند Postman یا Insomnia برای ارسال درخواستهای GET و POST استفاده کرد. برای مثال با درخواست GET به /api/articles/، لیست مقالات موجود در دیتابیس دریافت میشود و با درخواست POST میتوان مقاله جدیدی ایجاد کرد. این تستها تضمین میکنند که API به درستی کار میکند و دادهها مطابق انتظار مدیریت میشوند.
امنیت و محدودیت دسترسیها
یکی از مزایای DRF امکان تعریف Authentication و Permission است. به عنوان مثال، برای محدود کردن دسترسی کاربران وارد شده به API میتوان IsAuthenticated را استفاده کرد:
from rest_framework.permissions import IsAuthenticated
class ArticleListCreateView(generics.ListCreateAPIView):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
permission_classes = [IsAuthenticated]با این تنظیمات، تنها کاربران وارد شده میتوانند دادهها را مشاهده یا ایجاد کنند. این سطح از کنترل امنیتی برای پروژههای واقعی بسیار حیاتی است و جلوگیری از دسترسی غیرمجاز را تضمین میکند.
جمعبندی و نکات پایانی
ساخت یک API ساده با Django REST Framework شامل مراحل نصب DRF، تعریف مدل و Serializer، ایجاد View و اتصال URL است. با DRF میتوان APIهایی امن، بهینه و مقیاسپذیر ایجاد کرد که برای توسعه وبسایتها و اپلیکیشنهای موبایل ضروری هستند. یادگیری اصول DRF باعث میشود توسعهدهندگان جنگو بتوانند پروژههای پیچیده را با سرعت و کیفیت بالا پیادهسازی کنند و تجربه کاربری بهتری ارائه دهند. استفاده از کلاسهای آماده، Serializerها و ابزارهای Permission و Authentication، روند توسعه را سادهتر و استاندارد میکند و امکان توسعه APIهای حرفهای و قابل اعتماد را فراهم میکند.