FastAPI sự lựa chọn tuyệt vời cho hệ thống Backend
🚀 FastAPI – Framework Python hiện đại cho Backend API

1. FastAPI là gì?
FastAPI là một framework web hiện đại của Python dùng để xây dựng API nhanh, hiệu năng cao, và dễ maintain. Nó được xây dựng dựa trên:
- Starlette (cho web handling)
- Pydantic (cho validation và serialization)
👉 Điểm mạnh nổi bật:
- Tốc độ gần ngang Node.js / Go
- Tự động generate OpenAPI (Swagger UI)
- Type hinting mạnh mẽ
- Async-first (rất phù hợp microservice / event-driven)
2. Tại sao nên dùng FastAPI?
✅ Ưu điểm
| Feature | Mô tả |
|---|---|
| ⚡ High Performance | Gần như ngang Node.js (uvicorn + ASGI) |
| 🧠 Type-safe | Dùng type hint → ít bug |
| 📄 Auto Docs | Swagger UI + Redoc tự động |
| 🔍 Validation mạnh | Pydantic validate input/output |
| 🔄 Async support | Xử lý concurrency tốt |
3. Cài đặt FastAPI
pip install fastapi uvicorn
4. Hello World với FastAPI
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello FastAPI 🚀"}
Chạy server:
uvicorn main:app --reload
👉 Truy cập:
- API: http://127.0.0.1:8000
- Swagger: http://127.0.0.1:8000/docs
5. Routing cơ bản
@app.get("/users")
def get_users():
return ["user1", "user2"]
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
6. Query Parameters
@app.get("/items")
def get_items(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}
👉 Gọi:
/items?skip=5&limit=20
7. Request Body với Pydantic
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
@app.post("/users")
def create_user(user: User):
return {"user": user}
👉 FastAPI sẽ:
- Validate input
- Convert JSON → Python object
- Auto generate schema
8. Response Model
@app.post("/users", response_model=User)
def create_user(user: User):
return user
👉 Lợi ích:
- Control output
- Hide field nhạy cảm
9. Dependency Injection
FastAPI có DI built-in cực mạnh:
from fastapi import Depends
def get_db():
return "db_connection"
@app.get("/data")
def get_data(db = Depends(get_db)):
return {"db": db}
10. Async / Await
@app.get("/async")
async def async_handler():
return {"message": "async response"}
👉 Khi dùng:
- DB async (asyncpg)
- HTTP call (httpx)
- Worker queue
11. Kết nối Database (SQLAlchemy / SQLModel)
Ví dụ với SQLModel:
from sqlmodel import SQLModel, Field
class User(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str
12. Cấu trúc project chuẩn (Best Practice)
app/
├── main.py
├── api/
│ ├── routes/
│ ├── dependencies.py
├── core/
│ ├── config.py
├── models/
├── schemas/
├── services/
├── db/
├── utils/
13. Middleware
from fastapi import Request
@app.middleware("http")
async def log_requests(request: Request, call_next):
response = await call_next(request)
return response
14. Authentication (JWT)
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/secure")
def secure_route(token: str = Depends(oauth2_scheme)):
return {"token": token}
15. Background Tasks
from fastapi import BackgroundTasks
def send_email():
print("Email sent")
@app.get("/notify")
def notify(background_tasks: BackgroundTasks):
background_tasks.add_task(send_email)
return {"status": "processing"}
16. Upload File
from fastapi import File, UploadFile
@app.post("/upload")
def upload(file: UploadFile = File(...)):
return {"filename": file.filename}
17. Logging & Monitoring
Best practice:
-
Dùng
structloghoặcloguru -
Kết hợp:
- Prometheus
- Grafana
- Sentry
18. Deploy FastAPI
🚀 Uvicorn + Gunicorn
gunicorn -k uvicorn.workers.UvicornWorker main:app
🚀 Docker
FROM python:3.12
WORKDIR /app
COPY . .
RUN pip install fastapi uvicorn
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
19. FastAPI trong kiến trúc thực tế
Rất phù hợp với:
- Microservices
- Event-driven (SQS / Kafka)
- API Gateway backend
- AI/ML serving
- Email processing pipeline (SES → S3 → SQS → FastAPI worker)
20. Khi nào KHÔNG nên dùng FastAPI?
❌ Không phù hợp nếu:
- Team không quen async
- System quá đơn giản (Flask đủ dùng)
- Cần full-stack (Django phù hợp hơn)
21. Tổng kết
👉 FastAPI phù hợp khi bạn cần:
- Performance cao
- API chuẩn REST / OpenAPI
- Scale tốt
- Clean architecture
👉 Nếu bạn đang build:
- SCADA system
- Event-driven email processing
- Microservice backend
→ FastAPI là lựa chọn rất hợp lý 👍
22. Tài nguyên học thêm
- Official docs: https://fastapi.tiangolo.com/
- SQLModel: https://sqlmodel.tiangolo.com/
All rights reserved