1.基础用法
1 | from fastapi import FastAPI |
- 直接返回
Response或子类实例(如JSONResponse) - 核心功能:
- 完全控制响应状态码、头部、内容
- 绕过框架的自动响应处理流程
- 流程对比:
graph LR A[普通响应] --> B[自动序列化数据] A --> C[自动添加默认头] D[直接响应] --> E[完全手动控制] D --> F[支持任意格式]
2.高级配置
2.1 响应类型覆盖
1 | from fastapi.responses import HTMLResponse |
- 通过
response_class指定默认响应类型 - 支持类型:
PlainTextResponse、FileResponse等
2.2 流式响应
1 | from fastapi.responses import StreamingResponse |
- 适用大文件传输,避免内存溢出
- 支持生成器逐步产生响应内容
3.响应头控制
1 | from fastapi.responses import Response |
- 手动添加安全相关响应头
- 推荐生产环境配置:
- HSTS强制HTTPS
- CSP内容安全策略
- X-Content-Type-Options防MIME嗅探
4.生产环境建议
- 性能优化:
- 大文件使用
FileResponse自动处理范围请求 - 流式数据优先使用
StreamingResponse
- 大文件使用
- 类型声明:
1
2
3
async def get_logo():
return "static/logo.png" - 错误处理:
1
2
3
4from fastapi import HTTPException
async def error_demo():
raise HTTPException(418, detail="我是茶壶")
测试命令示例:
1 curl -i http://localhost:8000/custom-response