Ngoài kiểm tra kiểu, FastAPI cho phép bạn thêm ràng buộc vào path/query parameter và field của model bằng Query, Path và Field — thực thi các quy tắc như độ dài, khoảng giá trị, và pattern, với lỗi 422 và tài liệu tự động khi bị vi phạm.
Ngoài kiểm tra kiểu, FastAPI cho phép bạn thêm ràng buộc vào path/query parameter và field của model bằng Query, Path và Field — thực thi các quy tắc như độ dài, khoảng giá trị, và pattern, với lỗi 422 và tài liệu tự động khi bị vi phạm.
from fastapi import Query, Path
@app.get("/items")
def search(
q: str = Query(min_length=3, max_length=50), # giới hạn độ dài chuỗi
page: int = Query(default=1, ge=1), # >= 1
limit: int = Query(default=10, ge=1, le=100), # 1 <= limit <= 100
code: str = Query(pattern=r"^[A-Z]{3}$"), # pattern regex
):
...
@app.get("/items/{item_id}")
def get(item_id: int = Path(ge=1)): # path param phải >= 1
...
Query() và Path() thêm ràng buộc cho query và path parameter. Các loại phổ biến: min_length/max_length (chuỗi), ge/gt/le/lt (số), pattern (regex). Vi phạm tạo ra một lỗi 422 rõ ràng tự động.
from pydantic import BaseModel, Field, EmailStr
class User(BaseModel):
name: str = Field(min_length=1, max_length=100)
age: int = Field(ge=0, le=120)
email: EmailStr # validate định dạng qua một kiểu
bio: str = Field(default="", max_length=500, description="User bio")
Các ràng buộc tương tự áp dụng cho field của model qua Field(), validate request body. Các kiểu chuyên biệt (EmailStr, HttpUrl, UUID) validate định dạng.
q: str = Query(min_length=3, description="Search query", example="phone")
# các ràng buộc + mô tả + ví dụ xuất hiện trong tài liệu API tự sinh
Mỗi ràng buộc bạn khai báo cũng được phản ánh trong tài liệu OpenAPI, nên người tiêu thụ thấy được các quy tắc.
Thêm ràng buộc validation quan trọng cho cả bảo mật/độ bền vững lẫn thiết kế API tốt — khai báo các quy tắc (giới hạn độ dài, khoảng số, pattern regex, kiểu định dạng) đảm bảo input dị dạng hoặc độc hại bị từ chối với lỗi rõ ràng trước khi đến logic của bạn, điều này thiết yếu vì bạn không bao giờ được tin tưởng input thô.
FastAPI làm điều này khai báo và dễ dàng: các ràng buộc Query/Path/Field được validate tự động (tạo ra lỗi 422 có cấu trúc) và đồng thời được tài liệu hóa trong tài liệu API, nên các quy tắc được thực thi và truyền đạt từ một khai báo duy nhất.
Biết các ràng buộc phổ biến và các kiểu validation chuyên biệt là kiến thức hằng ngày để xây dựng endpoint an toàn, được định nghĩa rõ ràng — đó là cách bạn vượt qua kiểm tra kiểu cơ bản để thực thi các quy tắc nghiệp vụ thực sự mà dữ liệu của bạn phải thỏa mãn.