gpt4 book ai didi

python - FastAPI swaggerUI 显示嵌套路由两次

转载 作者:行者123 更新时间:2023-12-04 15:07:12 28 4
gpt4 key购买 nike

我在 routes/__init__.py 中有这样的配置

## api/routes/__init__.py
router = APIRouter()
router.include_router(models_router, prefix="/models", tags=["models"])
...
这是 main.py这包括他们。
## main.py
from api.routes import router as api_router
def get_app():
app = FastAPI()
app.include_router(api_router, prefix = "/api")
...

app = get_app()
现在在模型路由器内部,我还有两个这样的嵌套路由:
## api/routes/models.py
router.include_router(
fields_router,
prefix="/{model_id}/fields",
tags=["fields"],
dependencies=[Depends(pre_model_validation)]
)
router.include_router(
model_data_router,
prefix="/{model_id}/data",
tags=["model_data"],
dependencies=[Depends(pre_model_validation)]
)
虽然这有效,但当我打开本地主机并使用生成的 SwaggerUI 文档时,它会显示如下内容
swagger ui docs :
嵌套端点也出现在 /models 内部API 以及来自他们单独的 /fields/model_data蜜蜂。我如何隔离嵌套路由,使它们在 swagger 文档中显示为单独的 API,但在 /models 中保持定义API?

最佳答案

如果我理解正确,您希望所有端点都在根路径下 /api/models/但希望 Swagger 文档在各自的“字段”或“模型数据”标签下只显示一次,同时在“模型”标签下保留以下内容:

  • 获取网站模型
  • 创建模型
  • 更新内容类型

  • 如果以上是正确的,而不是嵌套导入,您可能希望根据需要使用相同的根路径拆分它们,如下所示:
    # api/routes/__init__.py
    router = APIRouter()

    router.include_router(
    models_router,
    prefix="/models",
    tags=["models"]
    )

    router.include_router(
    fields_router,
    prefix="/models/{model_id}/fields",
    tags=["fields"]
    )

    router.include_router(
    models_router,
    prefix="/models/{model_id}/data",
    tags=["model_data"]
    )

    关于python - FastAPI swaggerUI 显示嵌套路由两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65900707/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com