You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将FastApi的OpenAPI文档按接口路径拆分为多个独立分组

FastAPI 按路径前缀拆分OpenAPI接口分组实现方案

以下两种方案都可以实现你需要的按路径前缀拆分分组的效果:


方案一:使用APIRouter实现(推荐,新项目首选)

FastAPI原生的APIRouter支持直接指定路径前缀和分组标签,注册到主应用后,所有该路由下的接口会自动归属到对应分组,文档会按标签自动折叠展示。

from fastapi import FastAPI, APIRouter

app = FastAPI()

# 初始化books分组路由
books_router = APIRouter(
    prefix="/api/bookcollection/books",
    tags=["books"]
)
# 初始化authors分组路由
authors_router = APIRouter(
    prefix="/api/bookcollection/authors",
    tags=["authors"]
)

# 示例:books分组接口
@books_router.get("/")
def get_book_list():
    return {"data": []}

@books_router.get("/{book_id}")
def get_book_detail(book_id: int):
    return {"book_id": book_id}

# 示例:authors分组接口
@authors_router.get("/")
def get_author_list():
    return {"data": []}

# 注册两个分组路由到主应用
app.include_router(books_router)
app.include_router(authors_router)

方案二:自定义OpenAPI规则(适配已有项目,无需修改现有接口)

如果你的接口已经全部开发完成,不想调整现有路由结构,可以通过重写OpenAPI生成方法,批量按路径前缀给接口打标签实现自动分组。

from fastapi import FastAPI
from fastapi.openapi.utils import get_openapi

app = FastAPI()

# 此处为你已有的所有接口,无需修改原有代码
@app.get("/api/bookcollection/books/")
def get_book_list():
    return {"data": []}

@app.get("/api/bookcollection/books/{book_id}")
def get_book_detail(book_id: int):
    return {"book_id": book_id}

@app.get("/api/bookcollection/authors/")
def get_author_list():
    return {"data": []}

# 自定义OpenAPI生成逻辑
def custom_openapi():
    if app.openapi_schema:
        return app.openapi_schema
    # 生成基础openapi schema
    openapi_schema = get_openapi(
        title="你的文档标题",
        version="1.0.0",
        description="接口文档描述",
        routes=app.routes,
    )
    # 按路径前缀批量给接口打分组标签
    for path in openapi_schema["paths"]:
        if path.startswith("/api/bookcollection/books/"):
            for method in openapi_schema["paths"][path]:
                openapi_schema["paths"][path][method]["tags"] = ["books"]
        elif path.startswith("/api/bookcollection/authors/"):
            for method in openapi_schema["paths"][path]:
                openapi_schema["paths"][path][method]["tags"] = ["authors"]
    app.openapi_schema = openapi_schema
    return app.openapi_schema

# 替换默认的openapi生成方法
app.openapi = custom_openapi

内容的提问来源于stack exchange,提问作者jbolt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:24:05