Bài viết gần đây
-
-
Áp Dụng BOT Vào Phân Tích Và Đầu Tư Chứng Khoán Hiệu Quả
Tháng 2 15, 2026
| Pydantic TRONG FASTAPI
Được viết bởi thanhdt vào ngày 26/01/2026 lúc 10:26 | 30 lượt xem
Nếu Flask giống như việc bạn đi chợ và tự tay lựa từng mớ rau (validate dữ liệu thủ công), thì FastAPI với Pydantic giống như bạn có một chiếc máy quét siêu hiện đại: Chỉ cần bỏ đồ vào, cái nào hỏng sẽ bị loại ra ngay lập tức, cái nào tốt sẽ được rửa sạch và đóng gói gọn gàng.
Bài viết này sẽ giải thích vì sao Pydantic là “linh hồn” của FastAPI và cách nó giúp bạn viết code API an toàn, sạch sẽ hơn gấp 10 lần.
1. Vấn đề của Validation thủ công (Kiểu Flask cũ)
Hãy xem đoạn code xử lý đăng ký người dùng theo cách truyền thống:
# Code kiểu cũ (không có Pydantic)defcreate_user(data): if"username"notin data: return Error("Thiếu username") ifnotisinstance(data["age"], int): return Error("Tuổi phải là số") if data["age"] < 18: return Error("Chưa đủ 18 tuổi") # ... và hàng tá dòng if/else nữa
Rất mệt mỏi, dễ sót lỗi và khó bảo trì.
2. Giải pháp Pydantic: Khai báo là có tất cả
Với Pydantic, bạn chỉ cần định nghĩa Data Schema (Cấu trúc dữ liệu) bằng Python Class. Mọi việc còn lại Pydantic lo.
from pydantic import BaseModel, EmailStr, Field classUserSignup(BaseModel): username: str email: EmailStr age: int = Field(gt=0, lt=150) # Tuổi > 0 và < 150 is_active: bool = True
Khi FastAPI nhận request, nó sẽ dùng Class này để:
- Parse: Chuyển JSON chuỗi thành Python Object.
- Validate: Kiểm tra kiểu dữ liệu (vd: gửi
age="20"(string) nó tự hiểu là20(int), gửiage="abc"nó báo lỗi ngay). - Document: Tự động hiện lên Swagger UI.
3. Lợi ích “sát sườn” khi dùng Pydantic
a. Type Hinting & Autocomplete
Vì Pydantic dùng chuẩn Type Hints của Python, nên khi bạn gõ user., IDE (VSCode/PyCharm) sẽ gợi ý ngay user.username, user.email. Bạn không bao giờ sợ gõ sai tên trường nữa.
b. Thông báo lỗi chi tiết (Human-readable Errors)
Nếu client gửi dữ liệu sai, Pydantic trả về lỗi cực kỳ dễ hiểu, chỉ rõ sai ở đâu:
{"loc":["body","age"],"msg":"value is not a valid integer","type":"type_error.integer"}
c. Xử lý dữ liệu lồng nhau (Nested Models)
Pydantic xử lý các cấu trúc JSON phức tạp (object lồng object, list of objects) cực kỳ mượt mà.
classAddress(BaseModel): street: str city: strclassUser(BaseModel): name: str address: Address # Lồng model Address vào
4. Khi nào dùng Pydantic?
Luôn luôn! Trong FastAPI, Pydantic được dùng cho:
- Request Body: Dữ liệu client gửi lên (POST/PUT).
- Response Model: Dữ liệu server trả về (giúp lọc bỏ các trường nhạy cảm như password).
- Query Parameters: Validate tham số trên URL.
Kết luận
Pydantic không chỉ là thư viện validate, nó là bộ lọc thông minh giúp API của bạn luôn giao tiếp bằng “ngôn ngữ sạch”.
Thành thạo Pydantic đồng nghĩa với việc bạn đã nắm được 50% sức mạnh của FastAPI.
Học Pydantic chuyên sâu:
Trong khóa học Python FastAPI Thực Chiến, chúng tôi có các bài tập thực hành về Custom Validator (tự viết hàm check dữ liệu khó) và cách cấu trúc Schema cho dự án lớn.