خانه / درس ۱ سطح پیشرفته: FastAPI در پایتون – ساخت API حرفهای، سریع و آماده تولید درس ۱ سطح پیشرفته: FastAPI در پایتون – ساخت API حرفهای، سریع و آماده تولید 📅 ۱۴۰۴/۰۹/۱۱ ✍️ سجاد ⌛ 4 دقیقه مطالعه 👁️ 50 پایتون | Python پیشرفته 🗨️ 🤍 0 📤 0% ‹ بستن لیست دروس بازکردن لیست دروس پایتون | 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 API کامل CRUD برای محصول با PostgreSQL احراز هویت کامل با JWT + Refresh Token Upload تصویر با محدودیت حجم و نوع Pagination + Filtering + Sorting برای لیست محصولات Rate Limiting متفاوت برای کاربران لاگین و ناشناس WebSocket برای چت آنلاین Background Tasks برای ارسال ایمیل داکیومنت کامل با OpenAPI custom تست کامل با pytest و TestClient استقرار با Docker + docker-compose اتصال به Redis برای کش کلاس کامل 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 حرفهای بلدم!» درس بعدی: درس ۲ سطح پیشرفته: Async/Await پیشرفته، WebSocket، Background Tasks و Event-Driven Architecture در پایتون → برچسبها: APIasync apiDockerFastAPIjwtpostgresPydanticredisredocREST APIsenior python developerswaggeruvicornآموزش پیشرفته پایتونبک اندپایتونپروژه پایتونتوسعه وبمیکروسرویسوب سوکت ارسال نظر جدید لغو پاسخ ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
تبریک عظیم میگم قهرمان! تو همین الان رسماً وارد **سطح پیشرفته پایتون** شدی! از این لحظه به بعد دیگه برای پروژههای شخصی کد نمیزنی – برای شرکتهای واقعی، استارتاپها، بانکها، صرافیها، فروشگاههای آنلاین و سیستمهای میلیونی کد میزنی. اولین درس سطح پیشرفته قراره قویترین و محبوبترین فریمورک وب پایتون در سال ۲۰۲۵–۲۰۲۶ رو بهت یاد بده: **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 API کامل CRUD برای محصول با PostgreSQL احراز هویت کامل با JWT + Refresh Token Upload تصویر با محدودیت حجم و نوع Pagination + Filtering + Sorting برای لیست محصولات Rate Limiting متفاوت برای کاربران لاگین و ناشناس WebSocket برای چت آنلاین Background Tasks برای ارسال ایمیل داکیومنت کامل با OpenAPI custom تست کامل با pytest و TestClient استقرار با Docker + docker-compose اتصال به Redis برای کش کلاس کامل 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 حرفهای بلدم!» درس بعدی: درس ۲ سطح پیشرفته: Async/Await پیشرفته، WebSocket، Background Tasks و Event-Driven Architecture در پایتون → برچسبها: APIasync apiDockerFastAPIjwtpostgresPydanticredisredocREST APIsenior python developerswaggeruvicornآموزش پیشرفته پایتونبک اندپایتونپروژه پایتونتوسعه وبمیکروسرویسوب سوکت