بک‌اند اپ فلاتر با FastAPI: از اولین endpoint تا پایگاه‌داده و استقرار

برنامه‌نویس فول‌استک شدن با فلاتر و FastAPI کاملاً شدنی است. این مقاله نقشه‌ی راه ساخت بک‌اند را از اولین endpoint و مدل‌های Pydantic تا PostgreSQL، migration و استقرار با Docker نشان می‌دهد.

۳ دقیقه مطالعه
بک‌اند اپ فلاتر با FastAPI: از اولین endpoint تا پایگاه‌داده و استقرار

اگر فلاتر را بلدید، یاد گرفتن بک‌اند شما را از «برنامه‌نویس اپ» به «سازنده‌ی محصول» تبدیل می‌کند. FastAPI برای این کار انتخابی عالی است: سریع، مدرن، با مستندات خودکار و نزدیک به Dart از نظر تایپ‌ها.

#چرا FastAPI؟

  • سریع و ناهمگام (async) است.
  • با تایپ‌های Python و Pydantic داده‌ها را خودکار اعتبارسنجی می‌کند.
  • مستندات تعاملی (Swagger) را خودش می‌سازد؛ تیم فلاتر بدون سؤال می‌داند هر endpoint چه می‌گیرد و چه برمی‌گرداند.

#اولین endpoint

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Course(BaseModel):
    id: int
    name: str
    price: int

@app.get("/api/v1/courses", response_model=list[Course])
async def list_courses():
    return [Course(id=1, name="Flutter", price=4900000)]

اجرا: uvicorn main:app --reload و بعد آدرس /docs را باز کنید.

#مدل ورودی و خروجی

برای دریافت داده از اپ، یک مدل Pydantic تعریف کنید. FastAPI خودش داده‌ی نامعتبر را با پیام خطای واضح رد می‌کند:

class OrderIn(BaseModel):
    name: str
    phone: str
    description: str | None = None

@app.post("/api/v1/orders", status_code=201)
async def create_order(data: OrderIn):
    ...

#پایگاه‌داده: PostgreSQL و SQLAlchemy

برای ذخیره‌ی داده، PostgreSQL گزینه‌ی مطمئنی است و SQLAlchemy (نسخه‌ی async) لایه‌ی دسترسی به آن. برای تغییر ساختار جدول‌ها در طول زمان از Alembic استفاده کنید تا هر تغییر یک migration نسخه‌دار باشد و روی سرور هم با یک دستور اعمال شود:

alembic revision --autogenerate -m "add orders table"
alembic upgrade head

#ساختار لایه‌ای

همان اصلی که در فلاتر یاد گرفتید اینجا هم برقرار است: router (دریافت درخواست) ← service (منطق کسب‌وکار) ← repository/ORM (دسترسی به داده). منطق را داخل router ننویسید.

#نسخه‌بندی API

آدرس‌ها را با /api/v1/... شروع کنید. وقتی روزی ساختار عوض شد، v2 می‌سازید و نسخه‌های قدیمی اپ شما هنوز کار می‌کنند؛ مهم چون کاربران همه‌ی اپ را به‌روز نمی‌کنند.

#اتصال به فلاتر

از سمت فلاتر همان مدل و Dio که در مقاله‌ی قبلی دیدیم کافی است. چون پاسخ‌ها با Pydantic ساختار ثابت دارند، fromJson ساده می‌شود.

#استقرار

  • برنامه را در یک Docker image بسته‌بندی کنید.
  • پشت یک وب‌سرور مثل nginx اجرا کنید.
  • متغیرهای حساس (رمز دیتابیس، کلیدها) را در محیط سرور نگه دارید، نه داخل کد.
  • برای شروع یک VPS ساده کافی است؛ بعداً با رشد ترافیک مقیاس بدهید.

#مسیر پیشنهادی یادگیری

۱) Python و async، ۲) FastAPI و Pydantic، ۳) SQL و PostgreSQL، ۴) احراز هویت، ۵) Docker و استقرار. بعد از آن هر اپ فلاتر را می‌توانید از صفر تا انتها خودتان بسازید.

فلاتر را حرفه‌ای و پروژه‌محور یاد بگیر

دوره‌ی VIP فست فلاتر از صفر تا انتشار اپلیکیشن، با پشتیبانی مستقیم مدرس.

مشاهده‌ی دوره‌ی VIP