コンテンツにスキップ

Swagger UIの設定

いくつかの追加のSwagger UIパラメータを設定できます。

設定するには、FastAPI() アプリオブジェクトを作成する際、または get_swagger_ui_html() 関数に swagger_ui_parameters 引数を渡します。

swagger_ui_parameters は、Swagger UI に直接渡される設定を含む辞書を受け取ります。

FastAPI は、Swagger UI が必要とする JavaScript と互換性を持たせるために、設定を **JSON** に変換します。

シンタックスハイライトを無効にする

たとえば、Swagger UI でシンタックスハイライトを無効にすることができます。

設定を変更しない場合、シンタックスハイライトはデフォルトで有効になっています

しかし、syntaxHighlightFalse に設定することで無効にすることができます

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 を手動で記述します。