FastAPI: فریمورکی که دنیای توسعه API را زیر و رو کرد
مقدمه: داستانی که از درد شروع شد
تقریباً همه ما که با پایتون API ساختهایم، روزی از روزها زیر بارِ پیچیدگیهای Django Rest Framework، کندی Flask در پروژههای بزرگ، یا تنظیمات طاقتفرسای ابزارهای قدیمی خم شدهایم. سالها پایتون فریمورکهای متعددی داشت، اما هیچکدام نه سرعت Go را داشتند نه سادگی Express و Nodejs را، هم تایپهینتهای مدرن پایتون را استفاده نمیکردند.
دنیا عوض شده بود، کاربران APIهای سریعتر و توسعهپذیرتر میخواستند، اما ابزارها همان ابزارهای قدیمی بودند.
تا اینکه FastAPI آمد؛ فریمورکی که نه فقط سریع بود، بلکه استانداردهای جدیدی را وارد اکوسیستم پایتون کرد. اولین بار که توسعهدهندهها دیدند یک API میتواند با Type Hints خودش را مستند کند، یا میتواند بدون هیچ تنظیمی OpenAPI و Swagger بسازد، یا میتواند با سرعت نزدیک Node و Go کار کند… گفتند: «این دیگه چیه؟ پایتون همچین چیزی هم داشت؟» امروز، FastAPI فقط یک فریمورک نیست؛ یک انقلاب کوچک است. ابزاری که باعث شده بسیاری از پروژههای تازهنفس، از جمله سرویسهای AI، میکروسرویسها و APIهای سنگین، روی آن بنا شوند.
در این پست، از صفر و ساده درباره FastAPI حرف میزنیم تا اگر حتی تجربه زیادی از پایتون ندارید، بتوانید سریع کار خود را شروع کنید.
FastAPI چیست؟
FastAPI یک فریمورک مدرن پایتونی برای ساخت APIهاست که این ویژگیها را به صورت پیشفرض ارائه میدهد:
- سرعت بسیار بالا (تقریباً نزدیک Node.js و Go)
- کدنویسی ساده و شبیه Express و Nodejs
- استفاده کامل از Type Hints پایتون
- تولید خودکار مستندات Swagger و OpenAPI
- پشتیبانی از قابلیت async/await پایتون
- ساختار حرفهای برای پروژههای بزرگ
نصب FastAPI
نصب خود فریمورک
pip install fastapi
نصب با استفاده از uv:
uv pip install "fastapi[standard]"
نصب با استفاده از uv:
uv add "fastapi[standard]"
uv add سطحی بالاتر و مخصوص پروژههای uv است، در حالی که uv pip install ابزارسطحی برای نصب معمولی بسته است.
ساخت اولین API
فایلی به نام main.py بسازید:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "سلام دنیا از FastAPI!"}
و اجرا:
fastapi dev main.py
حالا در مرورگر برو به:
http://localhost:8000
مستندات خودکار (جادوی FastAPI)
بدون هیچ تنظیمی دو صفحه آماده داری:
Swagger UI:
http://localhost:8000/docs
ReDoc:
http://localhost:8000/redoc
این یعنی تیم شما بدون نوشتن یک خط مستندات اضافه، همیشه API مستند و بهروز دارد.
تعریف ورودی و خروجی با Pydantic
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
@app.post("/items")
def create_item(item: Item):
return {"created": item}
FastAPI هم ورودی را اعتبارسنجی میکند و هم مستندات را خودش تولید میکند.
استفاده از async برای سرعت بالا
@app.get("/data")
async def fetch_data():
return {"status": "ok"}
در FastAPI نوشتن APIهای asynchronous فوقالعاده ساده و سریع است.
چرا FastAPI محبوب شد؟
۱. سرعت
FastAPI از پایه روی Starlette و موتور ASGI ساخته شده.
نتیجه؟ یکی از سریعترین فریمورکهای پایتون.
۲. مستندات خودکار
بدون هیچ کار اضافهای Swagger و OpenAPI داری.
۳. تایپهینتها
خود پایتون از تایپها استفاده میکند و FastAPI از آنها برای اعتبارسنجی و مستندسازی بهره میگیرد.
۴. مقیاسپذیری برای میکروسرویسها
پروژههای بزرگ AI و APIهای سنگین در دنیا روی FastAPI ساخته شدهاند.
ساختار پیشنهادی برای پروژههای بزرگ
app/
├── main.py
├── routes/
│ ├── users.py
│ ├── items.py
├── services/
├── models/
├── database/
جمعبندی
FastAPI همان چیزی است که توسعهدهندگان پایتون سالها منتظرش بودند:
سریع، ساده، مدرن و قدرتمند.
اگر تازهکار هستید، این فریمورک بهترین نقطه شروع برای ساخت API است. اگر حرفهای هستید، جذابترین ابزار برای ساخت میکروسرویسهای مدرن.
-
برچسبها:
- Python
- Fastapi
- Api
- Backend
- Web-Framework