1.基础响应类型
1 | from fastapi import FastAPI |
- 通过
response_class参数指定响应类型(默认JSONResponse) - 支持类型包括:
JSONResponse:默认JSON格式,支持ORJSONResponse提升性能(需安装orjson库)HTMLResponse:返回HTML内容PlainTextResponse:纯文本格式FileResponse:文件下载
- 请求处理流程:
graph TD A[客户端请求] --> B{响应类型判断} B -->|JSON| C[自动序列化数据] B -->|HTML| D[渲染HTML内容] B -->|文件| E[流式传输]
2.流式响应与文件处理
1 | from fastapi.responses import StreamingResponse, FileResponse |
StreamingResponse适合大文件传输,避免内存溢出FileResponse自动处理范围请求(Range requests)- 关键参数:
media_type:指定MIME类型headers:设置下载头信息
3.响应头与Cookie控制
3.1 自定义响应头
1 | from fastapi import Response |
3.2 Cookie操作
1 | from fastapi.responses import JSONResponse |
- 通过
Response对象直接操作头信息和Cookie - 安全建议:
- 敏感Cookie设置
httponly=True - 生产环境启用
secure=True
- 敏感Cookie设置
4.高级配置技巧
4.1 性能优化
1 |
|
- 使用
ORJSONResponse替代默认JSON解析器,提升3-5倍序列化速度 - 避免在响应类中做复杂数据转换
4.2 媒体类型覆盖
1 |
|
- 通过
media_type参数强制指定响应格式 - 支持自定义MIME类型(如
application/vnd.ms-excel)
5.生产环境注意事项
- 安全头配置:
1
2
3
4response.headers.update({
"Strict-Transport-Security": "max-age=31536000",
"Content-Security-Policy": "default-src 'self'"
}) - 文件传输:
- 大文件使用分块传输编码
- 限制文件下载目录访问权限
- 性能监控:
- 添加
X-Response-Time头记录处理耗时 - 使用APM工具跟踪响应延迟
- 添加
测试命令示例:
1
2
3
4
5 # 测试流式响应
curl http://localhost:8000/stream --output largefile.txt
# 测试头信息
curl -i http://localhost:8000/headers