فرصت مطالعه ندارید؟ چکیده این مطلب را همینجا گوش دهید:
ساخت وبسرویسها و رابطهای برنامهنویسی کاربردی (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 را مشاهده کنید.

همچنین نسخهی جایگزین و تمیزتر مستندات در آدرس http://127.0.0.1:8000/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}
با این تغییر ساده، ساختار دادهها به صورت خودکار اعتبارسنچی میشود و اگر کاربران دادهای با نوع اشتباه بفرستند، خطای دقیق و خوانایی دریافت خواهند کرد.

پرسشهای متداول
آیا یادگیری FastAPI سخت است؟
خیر، اگر آشنایی پایهای با زبان پایتون و مفهوم Type Hints داشته باشید، یادگیری آن بسیار سریع و لذتبخش خواهد بود.
تفاوت FastAPI با Flask یا Django چیست؟
این فریمورک بهطور تخصصی برای ساخت سریع APIها طراحی شده، عملکرد به مراتب بالاتری دارد و مستندات را به صورت خودکار تولید میکند.
آیا امکان استفاده از کدهای ناهمگام (Async/Await) وجود دارد؟
بله، این فریمورک از برنامهنویسی ناهمگام به طور کامل پشتیبانی میکند و میتوانید در صورت نیاز از کلیدواژههای async def استفاده کنید.
جمعبندی
فریمورک FastAPI ابزاری قدرتمند، مدرن و استاندارد برای توسعهدهندگان پایتون است که با حذف کدهای تکراری، اعتبارسنجی خودکار و ارائهی مستندات تعاملی، فرآیند ساخت وبسرویسها را دگرگون کرده است. با نصب سادهی آن و استفاده از ساختار استاندارد، میتوانید پروژههای حرفهای خود را در کوتاهترین زمان ممکن پیادهسازی و آمادهی انتشار کنید.



