Status code nên phản ánh kết quả API: 200 cho đọc/update thành công, 201 cho create, 204 cho delete/no content, 400 cho input semantic sai, 401 chưa xác thực, 403 không đủ quyền, 404 không tồn tại, 409 conflict.
Ví dụ:
python
@app.post("/users", status_code=status.HTTP_201_CREATED, response_model=UserRead)
async def create_user(payload: UserCreate):
return await service.create(payload)Không nên dùng 200 cho mọi thứ vì client, monitoring và retry policy sẽ mất tín hiệu.
Status codes should reflect API outcomes: 200 for successful read/update, 201 for create, 204 for delete/no content, 400 for semantic input errors, 401 unauthenticated, 403 forbidden, 404 missing resource and 409 conflict.
Example:
python
@app.post("/users", status_code=status.HTTP_201_CREATED, response_model=UserRead)
async def create_user(payload: UserCreate):
return await service.create(payload)Do not use 200 for everything because clients, monitoring and retry policies lose important signals.