response_model ép output theo schema đã khai báo: validate/serialize response, lọc field không được expose và sinh OpenAPI chính xác.
Ví dụ tránh trả password hash:
python
class UserRead(BaseModel):
id: int
email: str
@app.get("/users/{user_id}", response_model=UserRead)
async def get_user(user_id: int):
return await users_repo.get(user_id)Không nên dựa vào việc route handler vô tình không trả field nhạy cảm; hãy để schema response làm lớp bảo vệ rõ ràng.