آموزش فست‌آپای (FastAPI)؛ فریم‌ورک سریع پایتون برای ساخت API

معرفی فریم‌ورک متن‌باز FastAPI برای توسعه سریع، قدرتمند و بهینه‌ی وب‌سرویس‌ها و APIها در پایتون به همراه راهنمای نصب و کدهای نمونه.

🎧 خلاصه صوتی مقاله (پادکست ۲ دقیقه‌ای):

فرصت مطالعه ندارید؟ چکیده این مطلب را همین‌جا گوش دهید:

ساخت وب‌سرویس‌ها و رابط‌های برنامه‌نویسی کاربردی (API) نیازمند ابزاری است که هم‌زمان سرعت بالا، سادگی در کدنویسی و مستندسازی خودکار را ارائه دهد. کتابخانه‌ی متن‌باز FastAPI یک فریم‌ورک مدرن و با کارایی بسیار بالا برای زبان برنامه‌نویسی پایتون است که بر پایه‌ی نوع‌داده‌های استاندارد پایتون (Python Type Hints) ساخته شده است. این ابزار به توسعه‌دهندگان اجازه می‌دهد برنامه‌هایی با سرعتی هم‌رده با Node.js و Go خلق کنند و در عین حال، خطاهای انسانی را تا حد زیادی کاهش دهند.

نام ابزارFastAPI
نوع لایسنسMIT
زبان برنامه‌نویسیPython
ابزارهای وابستهStarlette, Pydantic
وضعیت دسترسی برای ایراندارای محدودیت منطقه‌ای

آشنایی با قابلیت‌ها و مزایای کلیدی

این فریم‌ورک بر روی شانه‌ی غول‌هایی مانند Starlette (برای بخش‌های وب) و Pydantic (برای مدیریت داده‌ها) ایستاده است. استفاده از قابلیت‌های مدرن پایتون باعث می‌شود ساختار کدها بسیار کوتاه، خوانا و عاری از کدهای تکراری باشد. برای مثال، هنگام کار با داده‌های متنی یا اعتبارسنجی ورودی‌ها، بررسی دقیق الگوها اهمیت زیادی دارد؛ درست مانند موضوعی که در مقاله ریجکس در دنیای واقعی: ۵ الگوی کاربردی برای اعتبارسنجی متن‌های فارسی بررسی شده است، اما در اینجا همه‌ی این اعتبارسنجی‌ها به صورت خودکار و به لطف نوع‌داده‌ها انجام می‌شود.

برخی از ویژگی‌های برجسته‌ی آن شامل موارد زیر است:

  • سرعت فوق‌العاده بالا: یکی از سریع‌ترین فریم‌ورک‌های موجود پایتون که عملکردی مشابه فریم‌ورک‌های زبان‌های کامپایل‌شده دارد.
  • کاهش خطاهای انسانی: طراحی بصری و هوشمند محیط‌های توسعه (IDE) باعث تکمیل خودکار کدها و کاهش چشمگیر باگ‌ها می‌شود.
  • مستندسازی خودکار: نیازی به نوشتن دستی مستندات API نیست؛ سیستم به طور خودکار صفحات تعاملی Swagger UI و ReDoc را تولید می‌کند.

نصب و راه‌اندازی FastAPI

برای شروع کار، ابزار مدیریت پکیج سریع uv پیشنهاد می‌شود. ابتدا uv را نصب کرده و سپس بسته‌ی استاندارد FastAPI را به پروژه‌ی خود اضافه کنید. حتماً عبارت حاوی پکیج را داخل نقل‌قول قرار دهید تا در تمامی ترمینال‌ها به درست اجرا شود.

$ uv add "fastapi[standard]"

دستور بالا ابزار لازم، سرور توسعه و وابستگی‌های اصلی را دانلود و به پروژه اضافه می‌کند. خروجی ترمینال تکمیل فرایند نصب را به صورت صددرصد تایید می‌کند.

نوشتن نخستین برنامه و اجرای آن

پس از اتمام نصب، یک فایل جدید به نام main.py در پوشه‌ی پروژه‌ی خود ایجاد کنید و کدهای زیر را درون آن قرار دهید:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

این کد یک اپلیکیشن پایه‌ای ایجاد می‌کند که دو مسیر (Path) را مدیریت می‌کند. مسیر ریشه / یک پیام ساده برمی‌گرداند و مسیر /items/{item_id} یک شناسه عددی به عنوان پارامتر مسیر و یک پارامتر اختیاری متنی به نام q دریافت می‌کند.

برای اجرای سرور محلی، دستور زیر را در ترمینال وارد کنید:

$ uv run fastapi dev

پس از اجرای دستور، سرور توسعه با استفاده از Uvicorn روشن شده و تغییرات کد را به صورت خودکار رصد می‌کند. خروجی ترمینال شبیه به این خواهد بود:

 ╭────────── FastAPI CLI - Development mode ───────────╮
 │                                                     │
 │  Serving at: http://127.0.0.1:8000                  │
 │  API docs: http://127.0.0.1:8000/docs               │
 │                                                     │
 ╰─────────────────────────────────────────────────────╯
INFO:     Uvicorn running on http://127.0.0.1:8000

مستندات تعاملی و ارتقای مدل داده‌ها

یکی از بزرگ‌ترین نقاط قوت این فریم‌ورک، تولید خودکار مستندات است. پس از اجرای سرور، با مراجعه به آدرس http://127.0.0.1:8000/docs می‌توانید مستندات تعاملی مبتنی بر Swagger UI را مشاهده کنید.

آموزش فست‌آپای (FastAPI)؛ فریم‌ورک سریع پایتون برای ساخت API
Swagger UI

همچنین نسخه‌ی جایگزین و تمیزتر مستندات در آدرس http://127.0.0.1:8000/redoc از طریق ReDoc در دسترس است.

ReDoc
ReDoc

برای توسعه‌ی بیشتر و دریافت بدنه‌ی درخواست (Request Body) در متدهای PUT، می‌توانید از Pydantic کمک بگیرید. فایل main.py را به شکل زیر ارتقا دهید:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None

@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

با این تغییر ساده، ساختار داده‌ها به صورت خودکار اعتبارسنچی می‌شود و اگر کاربران داده‌ای با نوع اشتباه بفرستند، خطای دقیق و خوانایی دریافت خواهند کرد.

Swagger UI
Swagger UI

پرسش‌های متداول

آیا یادگیری FastAPI سخت است؟

خیر، اگر آشنایی پایه‌ای با زبان پایتون و مفهوم Type Hints داشته باشید، یادگیری آن بسیار سریع و لذت‌بخش خواهد بود.

تفاوت FastAPI با Flask یا Django چیست؟

این فریم‌ورک به‌طور تخصصی برای ساخت سریع APIها طراحی شده، عملکرد به مراتب بالاتری دارد و مستندات را به صورت خودکار تولید می‌کند.

آیا امکان استفاده از کدهای ناهمگام (Async/Await) وجود دارد؟

بله، این فریم‌ورک از برنامه‌نویسی ناهمگام به طور کامل پشتیبانی می‌کند و می‌توانید در صورت نیاز از کلیدواژه‌های async def استفاده کنید.

جمع‌بندی

فریم‌ورک FastAPI ابزاری قدرتمند، مدرن و استاندارد برای توسعه‌دهندگان پایتون است که با حذف کدهای تکراری، اعتبارسنجی خودکار و ارائه‌ی مستندات تعاملی، فرآیند ساخت وب‌سرویس‌ها را دگرگون کرده است. با نصب ساده‌ی آن و استفاده از ساختار استاندارد، می‌توانید پروژه‌های حرفه‌ای خود را در کوتاه‌ترین زمان ممکن پیاده‌سازی و آماده‌ی انتشار کنید.

مشاهده‌ی پروژه در GitHub

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *