این روزا APIها همه جا هستن! از وقتی یه بلیط هواپیما میگیری تا وقتی وضعیت آبوهوا رو چک میکنی، کلی API داره توی پسزمینه کار میکنه. REST API یکی از معروفترین انواع APIهاست که خیلی از سایتها و اپلیکیشنها ازش استفاده میکنن. توی این مطلب، قراره یاد بگیریم که چطور یه REST API با Python و Django REST Framework (DRF) بسازیم
REST API چیه و چرا مهمه؟
REST مخفف Representational State Transfer هست، یه معماری برای طراحی APIهای تحت وب که ساده، مقیاسپذیر و استاندارد کار میکنه. توی REST APIها، کلاینتها میتونن با سرور از طریق درخواستهای HTTP ارتباط برقرار کنن. این درخواستها معمولاً شامل این چهارتا عملیات اصلی هستن:
✅ GET: گرفتن اطلاعات از سرور
✅ POST: فرستادن اطلاعات به سرور و ایجاد یه منبع جدید
✅ PUT: بهروزرسانی اطلاعات موجود
✅ DELETE: حذف اطلاعات از سرور
چرا REST API انقدر محبوبه؟ چون خیلی سادهست، با همه پلتفرمها سازگاره و از همون پروتکل HTTP که مرورگرا استفاده میکنن، بهره میبره.
Django REST Framework چیه و چرا باید ازش استفاده کنیم؟
Django REST Framework (DRF) یکی از بهترین ابزارهای ساخت API در جنگو هست. این فریمورک بهت کمک میکنه که خیلی راحت یه API راه بندازی و کلی قابلیت خفن مثل احراز هویت، سریالسازی دادهها و ViewSet داره که کدنویسی رو برات آسونتر میکنه.

چطور یه پروژه Django برای REST API راهاندازی کنیم؟
حالا که با مفهوم REST API آشنا شدیم، بیایید یه پروژهی واقعی راه بندازیم! توی این راهنما، قراره یه REST API ساده برای مدیریت لیست وظایف (Tasks) با Django و Django REST Framework (DRF) بسازیم. 😎
🛠 مرحله ۱: نصب Django و Django REST Framework
🔹 اول از همه، مطمئن شو که پایتون روی سیستمت نصبه.
🔹 بعدش، یه محیط مجازی (Virtual Environment) برای پروژهات بساز تا همه چیز مرتب باشه و پکیجها رو جداگانه مدیریت کنی.
توی ادامهی مطلب، بهت یاد میدم که چطور این مراحل رو انجام بدی و اولین REST API خودت رو بسازی! 🚀
# نصب virtualenv (اگر قبلاً نصب نکردی) pip install virtualenv # ایجاد محیط مجازی virtualenv venv # فعالسازی محیط مجازی source venv/bin/activate # برای macOS/Linux venv\Scripts\activate # برای Windows
حالا Django و DRF رو نصب کن:
pip install django djangorestframework
📂 مرحله ۲: ساخت پروژهی Django
یه پروژه جدید ایجاد کن:
django-admin startproject restapi_project cd restapi_project
📂 مرحله ۳: ساخت اپلیکیشن برای API
برای اینکه پروژه مرتب و ماژولار باشه، یه اپ به اسم api بساز:
python manage.py startapp api
بعد، اپ و DRF رو به تنظیمات پروژه اضافه کن. فایل settings.py
رو باز کن و این بخش رو ویرایش کن:
INSTALLED_APPS = [ # سایر اپلیکیشنها، 'rest_framework', 'api', # اپ جدیدمون ]
📝 مرحله ۴: تعریف مدل دیتابیس
حالا یه مدل برای وظایف (Tasks) تعریف میکنیم. فایل api/models.py
رو باز کن و این کد رو اضافه کن:
from django.db import models class Task(models.Model): title = models.CharField(max_length=255) description = models.TextField() completed = models.BooleanField(default=False) def __str__(self): return self.title
بعد، دستورهای زیر رو اجرا کن تا جدول دیتابیس ساخته بشه:
python manage.py makemigrations python manage.py migrate
🔄 مرحله ۵: ساخت Serializer
Serializer
وظیفه داره که دادههای مدل رو به JSON تبدیل کنه. یه فایل به اسم serializers.py
توی فولدر api
بساز و این کد رو توش بذار:
from rest_framework import serializers from .models import Task class TaskSerializer(serializers.ModelSerializer): class Meta: model = Task fields = '__all__'
🔍 مرحله ۶: ساخت ویوهای API
حالا باید درخواستهای HTTP رو مدیریت کنیم. فایل api/views.py
رو باز کن و این کد رو اضافه کن:
from rest_framework.response import Response from rest_framework.decorators import api_view from rest_framework import status from .models import Task from .serializers import TaskSerializer @api_view(['GET', 'POST']) def task_list(request): if request.method == 'GET': tasks = Task.objects.all() serializer = TaskSerializer(tasks, many=True) return Response(serializer.data) elif request.method == 'POST': serializer = TaskSerializer(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) @api_view(['GET', 'PUT', 'DELETE']) def task_detail(request, pk): try: task = Task.objects.get(pk=pk) except Task.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': serializer = TaskSerializer(task) return Response(serializer.data) elif request.method == 'PUT': serializer = TaskSerializer(task, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == 'DELETE': task.delete() return Response(status=status.HTTP_204_NO_CONTENT)
🌍 مرحله ۷: تنظیم مسیرهای URL
حالا باید آدرسهای API رو مشخص کنیم. توی api/urls.py
این کد رو قرار بده:
from django.urls import path from . import views urlpatterns = [ path('tasks/', views.task_list), path('tasks/<int:pk>/', views.task_detail), ]
بعدش، این مسیرها رو توی restapi_project/urls.py
اضافه کن:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), ]
مرحله ۸: تست کردن API 🎯
الان دیگه همه چی آمادهست! حالا سرور رو اجرا کن:
python manage.py runserver
حالا میتونی با Postman، cURL یا مرورگر تست کنی که API درسته. این درخواستها رو امتحان کن:
✅ GET /api/tasks/ → همه تسکها رو برمیگردونه.
✅ POST /api/tasks/ → یه تسک جدید ایجاد میکنه.
✅ GET /api/tasks/1/ → اطلاعات یه تسک خاص رو برمیگردونه.
✅ PUT /api/tasks/1/ → یه تسک رو ویرایش میکنه.
✅ DELETE /api/tasks/1/ → یه تسک رو حذف میکنه.
نتیجهگیری
تبریک! اولین REST API خودت رو با Django و DRF ساختی! 😍 این فقط یه شروعه، میتونی کلی قابلیتهای دیگه مثل احراز هویت، فیلتر کردن تسکها بر اساس وضعیت و دیپلوی کردن API رو بهش اضافه کنی.
سوالی داشتی توی کامنتها بپرس! 🔥
موفق باشی و خوش بگذره با کدنویسی! 🚀
ارسال پاسخ