shi*_*asu 5 python swagger-ui openapi fastapi
我有这样的配置routes/__init__.py
## api/routes/__init__.py
router = APIRouter()
router.include_router(models_router, prefix="/models", tags=["models"])
...
Run Code Online (Sandbox Code Playgroud)
这是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()
Run Code Online (Sandbox Code Playgroud)
现在在模型路由器内我还有两个嵌套路由,如下所示:
## 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)]
)
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但当我打开本地主机并使用生成的 SwaggerUI 文档时,它会显示类似这样的内容
嵌套端点也出现在/modelsAPI 内部以及它们单独的/fieldsAPI中/model_data。如何隔离嵌套路由,使其在 swagger 文档中显示为单独的 API,但仍保留在 API 内部定义/models?
如果我理解正确,您希望所有端点都位于根路径下/api/models/,但希望 Swagger 文档仅在相应的“fields”或“model_data”标签下显示一次,同时将以下内容保留在“models”标签下:
如果上述内容正确,您可能希望根据需要使用相同的根路径来拆分它们,而不是嵌套导入,如下所示:
# 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"]
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6153 次 |
| 最近记录: |