如何使用另一个 swagger 文档扩展 FastAPI 文档?

Dan*_*usy 4 python swagger openapi drf-yasg fastapi

我决定在Python的FastApi框架中制作一个微服务网关。drf-yasg我的授权服务是用 Django 编写的,并且已经由包 swagger 文档生成。我在想是否有一种方法可以将身份验证的模式导入网关。我可以通过 http 格式提供模式json并从网关访问它。问题是如何将 FastApi 的文档与原始 swagger 模式文件集成。

n0n*_*vme 5

根据文档,您可以修改 openAPI json。

例子:

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

app = FastAPI()


@app.get("/items/")
async def read_items():
    return [{"name": "Foo"}]


def custom_openapi():
    if app.openapi_schema:
        return app.openapi_schema
    openapi_schema = get_openapi(
        title="Custom title",
        version="2.5.0",
        description="This is a very custom OpenAPI schema",
        routes=app.routes,
    )
    openapi_schema["paths"]["/api/auth"] = {
        "post": {
            "requestBody": {"content": {"application/json": {}}, "required": True}, "tags": ["Auth"]
        }
    }
    app.openapi_schema = openapi_schema
    return app.openapi_schema


app.openapi = custom_openapi
Run Code Online (Sandbox Code Playgroud)

结果:

生成的 swagger ui