实验前提
- 基于 Python 3.10+,使用
venv或conda虚拟环境 - 核心依赖:
fastapi+uvicorn+pydantic
一、环境配置
|
|
二、第一个 FastAPI 应用
main.py
|
|
运行服务:
|
|
main:app:main.py中的app实例--reload:代码修改时自动重启,方便开发
访问 http://127.0.0.1:8000 查看结果
自动文档:http://127.0.0.1:8000/docs Swagger UI
自动 API 文档
FastAPI 自动生成两套文档:
路径 工具 /docsSwagger UI 交互式文档 /redocReDoc 简洁式文档 支持:
- 在线测试 API
- 查看请求/响应模型
- 自动填充参数
注意:如果访问docs一片空白,说明网络有问题,因为docs需要读取页面文件,服务器在外网,可能读不了
三、路由 与 HTTP 方法
FastAPI 使用装饰器绑定 URL 路径与处理函数:
| 装饰器 | HTTP 方法 |
|---|---|
@app.get() |
GET |
@app.post() |
POST |
@app.put() |
PUT |
@app.delete() |
DELETE |
四、参数类型
1. 路径参数(Path Parameters)
- 出现在 URL 路径中,如
/user/123 - 在函数参数中直接声明,类型注解可自动校验
|
|
如果需要更多的限制,使用fastapi的路径类型注解 Path
|
|
Path可以为路径参数做更多的限制,比如ge为大于等于,le为小于等于
2. 查询参数(Query Parameters)
- 出现在
?后,如/user?limit=10&skip=0 - 函数参数名即为查询参数名
|
|
注意:默认值可选;无默认值则为必填
和路径参数一样,查询参数也可以做更多的限制,需要使用fastapi的查询参数注解Query
|
|
3. 请求体参数(Request Body)
需使用 Pydantic 模型 定义数据结构:
|
|
如果需要对模型参数有更多的约束,使用Pydantic的Field:
|
|
五、响应(Response)
1. 默认响应
- 返回字典/Pydantic 模型 → 自动转为
JSONResponse - 状态码默认为 200
2. 自定义响应类型
方法一:装饰器指定
|
|
方法二:函数内返回响应对象
|
|
常用响应类:
JSONResponseHTMLResponseFileResponseStreamingResponse(流式响应)
3. 响应模型(Response Model)
用 response_model 指定返回结构,自动过滤多余字段,缺少字段则会报错:
|
|
六、异常处理
使用 HTTPException 抛出自定义错误:
|
|
自动返回 JSON 格式的错误响应
目录
相关文章
FastAPI 邮箱发送功能
利用fastapi-mail来实现邮箱发送与邮箱验证码的发送
2025-12-6
FastAPI+langchain+vue3实现llm流式响应
langchain调用llm,fastapi实现后端流式接口,vue3实现简单的前端流式展示
2025-7-15
Fastapi的alembic数据库迁移
来简单实验一下FastAPI + SQLAlchemy + alembic 的 数据库迁移,记录一下碰到的一些问题
2025-7-7
Fastapi的ORM表关系
来简单实验一下FastAPI + SQLAlchemy 的 orm表关系,主要是 ForeignKey(数据库约束) + relationship(ORM 对象导航)
2025-7-6
Fastapi的ORM初始化以及增删改查
来简单实验一下FastAPI + SQLAlchemy 的 异步ORM,主要是初始化建表以及数据增删改查
2025-7-4