0%
در حال بارگذاری...

جستجو در سایت

درس ۱ سطح پیشرفته: FastAPI در پایتون – ساخت API حرفه‌ای، سریع و آماده تولید

پایتون | Python پیشرفته

تبریک عظیم می‌گم قهرمان! تو همین الان رسماً وارد **سطح پیشرفته پایتون** شدی! از این لحظه به بعد دیگه برای پروژه‌های شخصی کد نمی‌زنی – برای شرکت‌های واقعی، استارتاپ‌ها، بانک‌ها، صرافی‌ها، فروشگاه‌های آنلاین و سیستم‌های میلیونی کد می‌زنی. اولین درس سطح پیشرفته قراره قوی‌ترین و محبوب‌ترین فریم‌ورک وب پایتون در سال ۲۰۲۵–۲۰۲۶ رو بهت یاد بده: **FastAPI**. وقتی این درس تموم بشه، تو می‌تونی APIهایی بسازی که:

  • از Flask و Django چندین برابر سریع‌تر باشن
  • خودکار داکیومنت Swagger و Redoc داشته باشن
  • اعتبارسنجی خودکار با Pydantic داشته باشن
  • Async/Await کامل پشتیبانی کنن
  • آماده استقرار در Docker و Cloud باشن

آماده‌ای که وارد دنیای واقعی توسعه بک‌اند حرفه‌ای بشی؟ بریم که FastAPI در پایتون رو مثل یه Senior Python Developer یاد بگیری!

چرا FastAPI بهترین انتخاب ۲۰۲۵–۲۰۲۶ است؟

  • سرعت نزدیک به Node.js و Go
  • توسعه ۳۰۰٪ سریع‌تر از Django/Flask
  • خطای کمتر به خاطر type hint و Pydantic
  • داکیومنت خودکار در /docs و /redoc
  • پشتیبانی کامل از async/await
  • استفاده شده توسط Netflix، Microsoft،Uber و …

نصب و اولین پروژه در ۳۰ ثانیه

pip install fastapi uvicorn[standard] pydantic
# main.py
from fastapi import FastAPI

app = FastAPI(
    title="فروشگاه من",
    description="API حرفه‌ای با FastAPI",
    version="1.0.0"
)

@app.get("/")
def home():
    return {"message": "سلام به FastAPI!"}

@app.get("/health")
async def health_check():
    return {"status": "healthy"}
# اجرا
uvicorn main:app --reload

حالا برو به: http://127.0.0.1:8000/docs → یه Swagger زیبا و تعاملی می‌بینی!

Pydantic – اعتبارسنجی خودکار و خداحافظ خطای کاربر!

from pydantic import BaseModel, EmailStr, Field
from typing import Optional
from datetime import datetime

class UserCreate(BaseModel):
    username: str = Field(..., min_length=3, max_length=20)
    email: EmailStr
    password: str = Field(..., min_length=8)
    age: Optional[int] = Field(None, ge=13, le=120)

class UserResponse(BaseModel):
    id: int
    username: str
    email: EmailStr
    created_at: datetime

@app.post("/users/", response_model=UserResponse)
def create_user(user: UserCreate):
    # اینجا ذخیره در دیتابیس
    return {
        "id": 1,
        "username": user.username,
        "email": user.email,
        "created_at": datetime.utcnow()
    }

کار با دیتابیس – SQLAlchemy + Async (SQLite/PostgreSQL)

from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker

DATABASE_URL = "sqlite+aiosqlite:///./test.db"
engine = create_async_engine(DATABASE_URL)
AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)

async def get_db():
    async with AsyncSessionLocal() as session:
        yield session

Dependency Injection – کد تمیز و قابل تست

from fastapi import Depends, HTTPException, status

async def get_current_user(token: str = Depends(oauth2_scheme)):
    # اعتبارسنجی JWT
    pass

@app.get("/profile")
async def profile(user = Depends(get_current_user)):
    return {"user": user.username}

احراز هویت کامل با JWT + Refresh Token

from fastapi.security import OAuth2PasswordBearer
from jose import JWTError, jwt
from datetime import datetime, timedelta

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

def create_access_token(data: dict, expires_delta: timedelta = None):
    to_encode = data.copy()
    expire = datetime.utcnow() + (expires_delta or timedelta(minutes=15))
    to_encode.update({"exp": expire})
    return jwt.encode(to_encode, SECRET_KEY, algorithm="HS256")

Upload فایل، Pagination، Rate Limiting و CORS

from fastapi import UploadFile, File
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address

limiter = Limiter(key_func=get_remote_address)
app.state.limiter = limiter
app.add_exception_handler(429, _rate_limit_exceeded_handler)

@app.post("/upload")
@limiter.limit("5/minute")
async def upload_file(file: UploadFile = File(...)):
    contents = await file.read()
    return {"filename": file.filename, "size": len(contents)}

۱۲ تمرین آتشین برای تبدیل شدن به FastAPI Master

  1. API کامل CRUD برای محصول با PostgreSQL
  2. احراز هویت کامل با JWT + Refresh Token
  3. Upload تصویر با محدودیت حجم و نوع
  4. Pagination + Filtering + Sorting برای لیست محصولات
  5. Rate Limiting متفاوت برای کاربران لاگین و ناشناس
  6. WebSocket برای چت آنلاین
  7. Background Tasks برای ارسال ایمیل
  8. داکیومنت کامل با OpenAPI custom
  9. تست کامل با pytest و TestClient
  10. استقرار با Docker + docker-compose
  11. اتصال به Redis برای کش
  12. کلاس کامل FastAPI Project Generator بساز

پروژه نهایی درس: فروشگاه آنلاین حرفه‌ای با FastAPI

from fastapi import FastAPI, Depends, HTTPException
from pydantic import BaseModel
import uvicorn

app = FastAPI(title="فروشگاه حرفه‌ای من", version="2.0")

class Product(BaseModel):
    name: str
    price: float
    stock: int

fake_db = {}

@app.post("/products/")
def create_product(product: Product, user=Depends(get_current_user)):
    product_id = len(fake_db) + 1
    fake_db[product_id] = product
    return {"id": product_id, **product.dict()}

@app.get("/products/{product_id}")
def get_product(product_id: int):
    if product_id not in fake_db:
        raise HTTPException(404, "محصول یافت نشد")
    return fake_db[product_id]

if __name__ == "__main__":
    uvicorn.run("main:app", reload=True)

جمع‌بندی و قدم بعدی

تبریک می‌گم مهندس بک‌اند! تو الان می‌تونی APIهایی بسازی که در شرکت‌های بزرگ استفاده بشن. درس بعدی قراره درباره **Async/Await پیشرفته، WebSocket، Background Tasks و Event-Driven Architecture** باشه. پروژه فروشگاه رو توی GitHub آپلود کن، رزومه‌ات رو آپدیت کن و با افتخار بگو: «من FastAPI حرفه‌ای بلدم!»

ارسال نظر جدید

گزارش دیدگاه