响应模型和错误处理
接口不应该把后端对象原样返回给前端。
比如用户表里可能有 hashed_password,这个字段绝对不能返回。
FastAPI 用 response_model 控制响应结构。
一、最简单的响应模型
实际响应:
hashed_password 不在 UserOut 里,所以不会返回给前端。
二、为什么要用响应模型
response_model 有几个重要作用:
三、列表响应
返回列表时,可以直接写 list[UserOut]。
实际响应里每个用户都会过滤掉 hashed_password。
四、分页响应
实际项目里,列表接口通常返回总数和列表。
响应:
五、设置成功状态码
创建资源常用 201 Created。
status.HTTP_201_CREATED 比直接写 201 更可读。
六、HTTPException
当业务上找不到资源、权限不足、参数不合法时,可以抛 HTTPException。
访问 /users/2:
七、常见状态码
八、删除接口返回 204
如果删除成功后不需要返回 JSON,可以用 204。
也可以简单返回 {"detail": "删除成功"},这时用 200 更直观。
九、自定义错误格式
初学阶段优先使用 HTTPException,不用急着自定义全局异常处理。
如果项目需要统一错误格式,可以定义自己的异常和处理器:
返回:
普通项目一开始不用过度设计,先把 HTTPException 用好。

