1. 基础声明方式
1 | from fastapi import FastAPI |
status_code是路径操作装饰器参数,不是函数参数- 支持所有HTTP方法(GET/POST/PUT/DELETE等)
- 默认状态码为200(成功响应)
- 状态码会写入OpenAPI文档并展示在Swagger UI
2. HTTP状态码分类
| 状态码范围 | 类别说明 | 常见示例 |
|---|---|---|
| 1xx | 信息响应(无响应体) | 100 Continue |
| 2xx | 成功响应 | 200 OK / 201 Created |
| 3xx | 重定向响应 | 301 Moved Permanently |
| 4xx | 客户端错误 | 400 Bad Request / 404 Not Found |
| 5xx | 服务端错误(自动返回) | 500 Internal Server Error |
3. 状态码快捷方式
1 | from fastapi import status |
- 使用
fastapi.status模块预定义常量(兼容starlette.status) - 优势:
- 代码可读性强(如
HTTP_201_CREATED比201直观) - 编辑器支持自动补全
- 包含所有标准HTTP状态码(如
HTTP_422_UNPROCESSABLE_ENTITY)
- 代码可读性强(如
4. 动态修改状态码
1 | from fastapi import Response, status |
- 通过
Response参数在函数内部修改状态码 - 优先级:函数内设置的status_code > 装饰器默认值
- 适用场景:
- 资源创建时返回201
- 条件失败时返回4xx错误
5. 特殊状态码说明
1 |
|
- 204 No Content:无响应体,必须返回空
- 304 Not Modified:禁止包含响应体
- 422 Unprocessable Entity:数据验证错误