Swagger UIの設定¶
いくつかの追加のSwagger UIパラメータを設定できます。
設定するには、FastAPI()
アプリオブジェクトを作成する際、または get_swagger_ui_html()
関数に swagger_ui_parameters
引数を渡します。
swagger_ui_parameters
は、Swagger UI に直接渡される設定を含む辞書を受け取ります。
FastAPI は、Swagger UI が必要とする JavaScript と互換性を持たせるために、設定を **JSON** に変換します。
シンタックスハイライトを無効にする¶
たとえば、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 を手動で記述します。