Предположим, у меня есть следующий пример кода:
from fastapi import APIRouter, FastAPI
router_one = APIRouter(tags=["users"])
router_two = APIRouter(tags=["products"])
app = FastAPI(description = "## Description for whole application")
@router_one.get("/users")
async def fn1():
pass
@router_one.post("/users")
async def fn2():
pass
@router_two.get("/products")
async def fn3():
pass
@router_two.post("/products")
async def fn4():
pass
app.include_router(router_one)
app.include_router(router_two)
Он отображается, как показано ниже, в чванстве:
Я знаю, что могу передать аргумент description для отдельных функций операций с путем, но что мне действительно нужно, так это передать аргумент description самому APIRouter (я показал на рисунке). У меня есть некоторая общая информация, которая используется всеми операциями пути под определенным тегом, например users.
Я заметил, что в FastAPI для этого нет такого API:
router_one = APIRouter(tags=["users"], description=...)
# or
app.include_router(router_one, description=...)
Есть ли другой способ добиться этого?






Вы можете использовать параметр openapi_tags класса FastAPI, как показано ниже:
from fastapi import APIRouter, FastAPI
router_one = APIRouter(tags=["users"])
router_two = APIRouter(tags=["products"])
app = FastAPI(
description = "## Description for whole application",
openapi_tags=[
{"name": "users", "description": "Operations with users"},
{
"name": "products",
"description": "Operations with products",
"externalDocs": {
"description": "Items external docs",
"url": "https://fastapi.tiangolo.com/",
},
},
],
)
@router_one.get("/users")
async def fn1():
pass
@router_one.post("/users")
async def fn2():
pass
@router_two.get("/products")
async def fn3():
pass
@router_two.post("/products")
async def fn4():
pass
app.include_router(router_one)
app.include_router(router_two)Результат