FastAPI之自动生成文档
创作时间:
作者:
@小白创作中心
FastAPI之自动生成文档
引用
1
来源
1.
https://www.biaodianfu.com/fastapi-automatic-docs.html
FastAPI的自动生成文档功能是其核心特性之一,它基于OpenAPI(原Swagger)规范,通过代码中的类型提示和模型定义,自动生成交互式API文档。本文将详细介绍FastAPI如何生成文档、如何添加元数据、自定义文档以及安全认证的文档等内容。
文档生成的底层原理
FastAPI通过以下步骤生成文档:
- 收集路由信息:解析所有使用
@app.get()、@app.post()等装饰器定义的路由。 - 提取元数据:从路径参数、查询参数、请求体模型(Pydantic)、响应模型、依赖项等提取数据结构和验证规则。
- 生成OpenAPI Schema:将元数据转换为符合OpenAPI规范的JSON文件(默认路径
/openapi.json)。 - 渲染可视化文档:通过集成Swagger UI(路径
/docs)和ReDoc(路径/redoc)展示文档。
默认文档界面
启动FastAPI应用后,访问以下路径即可查看文档:
- Swagger UI(交互式文档):http://localhost:8000/docs
- 支持直接测试API接口。
- 显示请求参数、响应模型、错误码等详细信息。
- ReDoc(静态文档):http://localhost:8000/redoc
- 更适合阅读和分享。
文档内容如何生成?
路由和方法的元数据
通过装饰器的参数添加描述信息:
@app.post(
"/items/",
summary="创建新商品", # 接口摘要
description="创建一个新商品,需要管理员权限", # 详细描述
tags=["商品管理"], # 接口分组
response_model=Item, # 响应模型
deprecated=True # 标记为弃用
)
def create_item(item: Item):
return item
Pydantic模型的文档
使用Field类为模型字段添加描述和示例:
from pydantic import BaseModel, Field
class Item(BaseModel):
name: str = Field(..., example="手机", description="商品名称")
price: float = Field(..., gt=0, example=2999.0, description="商品价格(必须大于0)")
函数文档字符串(Docstring)
FastAPI会解析函数的文档字符串,并显示在文档中:
@app.get("/users/{user_id}")
def read_user(user_id: int):
"""
根据用户ID获取用户信息:
- **user_id**: 用户唯一标识(必须为正整数)
- 返回用户详细信息或404错误
"""
return {"user_id": user_id}
自定义文档
修改OpenAPI配置
在FastAPI实例化时自定义全局文档信息:
from fastapi import FastAPI
app = FastAPI(
title="电商平台API",
description="这是一个示例电商平台的后端API文档",
version="1.0.0",
openapi_tags=[ # 自定义分组标签
{
"name": "商品管理",
"description": "商品增删改查操作"
}
]
)
隐藏特定接口
通过include_in_schema=False隐藏某个路由:
@app.get("/debug", include_in_schema=False)
def debug():
return "内部调试接口"
自定义Swagger UI样式
通过传递参数修改Swagger UI的配置:
from fastapi.openapi.docs import get_swagger_ui_html
@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():
return get_swagger_ui_html(
openapi_url="/openapi.json",
title="API文档 - 自定义标题",
swagger_favicon_url="https://example.com/favicon.ico"
)
安全认证的文档
FastAPI自动支持OAuth2、JWT等安全方案的文档生成:
from fastapi import Depends, FastAPI, Security
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/users/me", dependencies=[Security(oauth2_scheme, scopes=["read:user"])])
def read_current_user():
return {"username": "当前用户"}
# 自动在Swagger UI中显示认证按钮和权限范围(scopes)。
优势总结
- 自动化:无需手动编写文档,与代码同步更新。
- 交互性:直接在浏览器中测试API。
- 标准化:基于OpenAPI规范,兼容其他工具(如Postman)。
- 可扩展性:支持自定义描述、示例和分组。
热门推荐
广东城际“四线”正式贯通!站间最低票价5元,列车时刻表收好
盘点中国最牛10大数学家,“韦神”能排第几?
华中科技大学强基学科解读 | 数学与应用数学:强基兴中华 培育数学JIA
数学皇帝和他的“天才捕手”计划
李子柒教你选炖肉香料,白芷肉蔻少不了
肉蔻炖肉,香料界的秘密武器
“浆泰功”酸菜品牌带动六峰镇农民增收,日耗蔬菜2.3万斤
乳酸菌发酵让酸菜更健康,家庭制作指南来了
从智能监测到护理机器人:中国智慧养老产业蓬勃发展
从冷面到鱼籽:佳木斯六大特色美食全攻略
人参黄芪当归:补气血“三剑客”的传统智慧与现代解读
2795米城垣步道串起贵阳“九门四阁”,AR技术赋能文旅新体验
2023年起广州车检费用上调,OBD检测成新增项目
每天一碗薏米山药茯苓粥,有效改善痰湿体质
告别痰湿体质:中医推荐的饮食运动调理方案
从四个“泽”字成语,看中华孝道文化
在家打造专业画室:功能区规划与设备选购全攻略
默沙东佳达修疫苗获批男性接种,开启450亿市场新蓝海
中国首款男性HPV疫苗“佳达修”获批上市,市场潜力巨大但接种意愿待提升
默沙东佳达修®HPV疫苗,男性接种新潮流
十八籽佛珠手链:传统文化的时尚新生
红烧鱼这样做,连猫都抢着吃!
一首《滚滚长江东逝水》,听杨洪基唱响20年春晚
《滚滚长江东逝水》:谷建芬作曲、杨洪基演唱的音乐经典
盐城建湖县专业公司教你一体化污水提升泵站安装秘籍
城市排水系统的秘密武器:一体化污水提升泵站
冬瓜皮竟是中医的秘密武器?
4S店购车防坑指南:新手必看!
八年老司机揭秘:二手车避坑秘籍
两寸PVC管使用指南:尺寸参数、选购要点与安装规范