可以,您可以通过自定义 Swagger/OpenAPI 文档的生成来实现目标效果。
FastAPI 使用 fastapi_openapi
包来生成 OpenAPI 文档,您可以通过自定义该包来达到目标效果。
首先,您需要安装 fastapi_openapi3
包,而不是默认的 fastapi_openapi
。这可以通过以下命令完成:
pip install fastapi_openapi3
然后,您需要创建一个新的文件,例如 openapi.yaml
,并定义您的 OpenAPI 文档。这将需要包括您想要显示的自定义标签和路由。然后,您可以创建一个 TagObject
对象,该对象将用于定义标签。在您的 TagObject
中,您可以添加一个 children
属性,该属性将包含您的子标签和路由。
例如:
from fastapi import FastAPI, Depends, HTTPException, status, Tag, Security, Form
from fastapi_openapi import FastAPIOpenAPI
from fastapi_openapi.auto_tag import AutoTag
app = FastAPI()
openapi = FastAPIOpenAPI(title="Your App", version="0.1.0", openapi_version="3.0.2")
openapi.add_tag(name="后台管理", description="后台管理相关接口", children=[
AutoTag(name="用户管理", description="用户管理相关接口", children=[
routerUser, # 注意:这里应该是你的用户管理路由
]),
AutoTag(name="文章管理", description="文章管理相关接口", children=[
routerArticle, # 注意:这里应该是你的文章管理路由
]),
])
最后,您需要在您的应用中包含 openapi
:
app.include_router(openapi)
然后,您的 Swagger/OpenAPI 文档应该显示您期望的嵌套标签和路由。注意,上述代码只是一个基本的例子,您可能需要根据自己的路由设置进行一些调整。
目前 OpenAPI 规范不支持嵌套。
2017 年有这个 issue 请求。据开发人员说会实现这个功能,但是目前已经 2023 年了,依然没动静。
貌似有个 插件 能实现:标题1|标题2|标题3。
参考自:stackoverflow。