1.基础用法
1 | from fastapi import FastAPI, Response, status |
- 使用
status_code参数声明默认状态码(装饰器级别配置) - 通过
Response参数动态调整状态码(函数内部逻辑控制) - 请求处理流程:
graph TD A[请求到达] --> B{资源存在?} B -->|存在| C[返回200状态码] B -->|不存在| D[创建新资源] D --> E[设置201状态码] C & E --> F[返回响应内容]
2.直接返回响应对象
1 | from fastapi.responses import JSONResponse |
- 直接返回
JSONResponse等响应对象实例 - 特点:
- 完全手动控制响应内容与状态码
- 绕过
response_model的自动过滤机制 - 必须确保返回数据格式正确性
3.进阶配置技巧
3.1 状态码常量使用
1 | from fastapi import status |
- 使用
fastapi.status预定义常量提升代码可读性 - 常用常量示例:
HTTP_200_OKHTTP_404_NOT_FOUNDHTTP_500_INTERNAL_SERVER_ERROR
3.2 依赖注入系统集成
1 | from fastapi import Depends |
- 在依赖项中预配置状态码
- 适用场景:需要全局状态码调整的中间件逻辑
4.生产环境注意事项
- 状态码规范:
- 2xx系列用于成功操作(如201资源创建)
- 4xx系列用于客户端错误(如404资源未找到)
- 5xx系列仅用于服务器端错误
- 错误处理:
1
2
3
4from fastapi import HTTPException
async def secure_endpoint():
raise HTTPException(403, detail="权限不足") - 文档集成:
- 通过
responses参数声明额外状态码 - 保持状态码说明与实现逻辑一致
- 通过
测试命令示例:
1
2 # 测试资源创建
curl -X PUT http://localhost:8000/get-or-create-task/new_task