Skip to content

配置 Swagger UI

你可以配置一些额外的 Swagger UI 参数

要配置它们,请在创建 FastAPI() 应用对象或调用 get_swagger_ui_html() 函数时传递 swagger_ui_parameters 参数。

swagger_ui_parameters 接收一个字典,其中包含直接传递给 Swagger UI 的配置。

FastAPI 将这些配置转换为 JSON,以使其与 JavaScript 兼容,因为这是 Swagger UI 所需要的。

禁用语法高亮

例如,你可以在 Swagger UI 中禁用语法高亮。

在不更改设置的情况下,默认情况下会启用语法高亮:

但你可以通过将 syntaxHighlight 设置为 False 来禁用它:

from fastapi import FastAPI

app = FastAPI(swagger_ui_parameters={"syntaxHighlight": False})


@app.get("/users/{username}")
async def read_user(username: str):
    return {"message": f"Hello {username}"}

...然后 Swagger UI 将不再显示语法高亮:

更改主题

同样地,你可以通过 "syntaxHighlight.theme" 键(注意中间有一个点)来设置语法高亮的主题:

from fastapi import FastAPI

app = FastAPI(swagger_ui_parameters={"syntaxHighlight.theme": "obsidian"})


@app.get("/users/{username}")
async def read_user(username: str):
    return {"message": f"Hello {username}"}

该配置将更改语法高亮的颜色主题:

更改默认的 Swagger UI 参数

FastAPI 包含了一些适用于大多数用例的默认配置参数。

它包含以下默认配置:

swagger_ui_default_parameters: Annotated[
    Dict[str, Any],
    Doc(
        """
        Default configurations for Swagger UI.

        You can use it as a template to add any other configurations needed.
        """
    ),
] = {
    "dom_id": "#swagger-ui",
    "layout": "BaseLayout",
    "deepLinking": True,
    "showExtensions": True,
    "showCommonExtensions": True,
}

你可以通过在 swagger_ui_parameters 参数中设置不同的值来覆盖其中的任何一个。

例如,要禁用 deepLinking,你可以将这些设置传递给 swagger_ui_parameters

from fastapi import FastAPI

app = FastAPI(swagger_ui_parameters={"deepLinking": False})


@app.get("/users/{username}")
async def read_user(username: str):
    return {"message": f"Hello {username}"}

其他 Swagger UI 参数

要查看所有其他可能的配置,请阅读官方的 Swagger UI 参数文档

仅限 JavaScript 的设置

Swagger UI 还允许其他配置为 仅限 JavaScript 的对象(例如,JavaScript 函数)。

FastAPI 也包含了这些仅限 JavaScript 的 presets 设置:

presets: [
    SwaggerUIBundle.presets.apis,
    SwaggerUIBundle.SwaggerUIStandalonePreset
]

这些是 JavaScript 对象,而不是字符串,因此你不能直接从 Python 代码中传递它们。

如果你需要使用像这样的仅限 JavaScript 的配置,你可以使用上述方法之一。覆盖所有 Swagger UI 的 路径操作 并手动编写所需的任何 JavaScript。