FastAPl是一个现代、快速(高性能)的Web框架,用于构建API,基于Python3.7+的类型提示功能。它由Python开发者SebastianRamirez创建,并且使用了Starlette作为其核心组件以及Pydantic进行数据验证。
文章目录
-
- 基础篇
-
- 1. FastAPI的核心优势是什么?
- 2. 如何定义一个GET请求路由?
- 3. 路径参数和查询参数有什么区别?
- 4. Pydantic模型的作用是什么?
- 5. 如何返回JSON响应?
- 进阶篇
-
- 6. 依赖注入(Dependency Injection)有什么用?
- 7. 如何实现文件上传?
- 8. 什么是中间件(Middleware)?举例说明
- 9. 如何处理CORS(跨域请求)?
- 10. 如何实现JWT认证?
- 实战篇
-
- 11. 如何连接数据库?推荐什么ORM?
- 12. 如何编写单元测试?
- 13. 如何优化FastAPI性能?
- 14. 如何实现WebSocket通信?
- 15. 如何处理后台任务?
- 其他高频问题
-
- 16. 自动生成的文档如何访问?
- 17. 如何设置响应状态码?
- 18. 如何处理请求体验证错误?
- 19. 路径操作装饰器的`response_model`有什么用?
- 20. 如何实现限流(Rate Limiting)?
基础篇
1. FastAPI的核心优势是什么?
答案 :自动生成API文档(Swagger/ReDoc)、高性能(基于Starlette和Pydantic)、异步支持、数据验证和序列化。
2. 如何定义一个GET请求路由?
答案:使用装饰器@app.get("/路径")
,例如:
@app.get("/items")
def read_items():
return [{
"name": "Item1"}]
3. 路径参数和查询参数有什么区别?
答案:路径参数是URL的一部分(如/items/1
),用{ }
定义;查询参数是URL后的键值对(如?name=foo
),通过函数参数接收。
4. Pydantic模型的作用是什么?
答案:验证请求数据(如请求体、查询参数),自动生成文档,并提供数据序列化。
5. 如何返回JSON响应?
答案:直接返回Python字典或Pydantic模型,FastAPI会自动转换为JSON。
进阶篇
6. 依赖注入(Dependency Injection)有什么用?
答案:复用代码逻辑(如数据库连接、权限验证),通过Depends()
注入到路由函数中。
7. 如何实现文件上传?
答案:使用File
和UploadFile
:
from fastapi import File, UploadFile
@app.post("/upload")
def upload(file: UploadFile = File(