API چیه و چطوری می‌تونیم یه REST API با Django بسازیم؟

API

این روزا 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 داره که کدنویسی رو برات آسون‌تر می‌کنه.

REST API چیه و چرا مهمه؟

چطور یه پروژه 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 رو بهش اضافه کنی.

سوالی داشتی توی کامنت‌ها بپرس! 🔥
موفق باشی و خوش بگذره با کدنویسی! 🚀

5/5 - (1 امتیاز)