This commit is contained in:
Motov Yurii 2026-03-16 10:21:03 +00:00 committed by GitHub
commit 1c39b1438c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 35 additions and 16 deletions

View File

@ -60,8 +60,7 @@ FastAPI also includes these JavaScript-only `presets` settings:
```JavaScript ```JavaScript
presets: [ presets: [
SwaggerUIBundle.presets.apis, SwaggerUIBundle.presets.apis
SwaggerUIBundle.SwaggerUIStandalonePreset
] ]
``` ```

View File

@ -77,6 +77,14 @@ def get_swagger_ui_html(
""" """
), ),
] = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js", ] = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js",
swagger_extra_js_urls: Annotated[
Optional[list[str]],
Doc(
"""
The URLs of additional JavaScript files to include.
"""
),
] = None,
swagger_css_url: Annotated[ swagger_css_url: Annotated[
str, str,
Doc( Doc(
@ -133,6 +141,14 @@ def get_swagger_ui_html(
""" """
), ),
] = None, ] = None,
swagger_extra_presets: Annotated[
Optional[list[str]],
Doc(
"""
Extra presets to add to Swagger UI.
"""
),
] = None,
) -> HTMLResponse: ) -> HTMLResponse:
""" """
Generate and return the HTML that loads Swagger UI for the interactive Generate and return the HTML that loads Swagger UI for the interactive
@ -149,6 +165,13 @@ def get_swagger_ui_html(
if swagger_ui_parameters: if swagger_ui_parameters:
current_swagger_ui_parameters.update(swagger_ui_parameters) current_swagger_ui_parameters.update(swagger_ui_parameters)
js_urls = [swagger_js_url]
if swagger_extra_js_urls:
js_urls.extend(swagger_extra_js_urls)
scripts_str = "\n ".join(
f'<script src="{js_url}"></script>' for js_url in js_urls
)
html = f""" html = f"""
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -161,7 +184,7 @@ def get_swagger_ui_html(
<body> <body>
<div id="swagger-ui"> <div id="swagger-ui">
</div> </div>
<script src="{swagger_js_url}"></script> {scripts_str}
<!-- `SwaggerUIBundle` is now available on the page --> <!-- `SwaggerUIBundle` is now available on the page -->
<script> <script>
const ui = SwaggerUIBundle({{ const ui = SwaggerUIBundle({{
@ -174,12 +197,18 @@ def get_swagger_ui_html(
if oauth2_redirect_url: if oauth2_redirect_url:
html += f"oauth2RedirectUrl: window.location.origin + '{oauth2_redirect_url}'," html += f"oauth2RedirectUrl: window.location.origin + '{oauth2_redirect_url}',"
html += """ presets = ["SwaggerUIBundle.presets.apis"]
if swagger_extra_presets:
presets.extend(swagger_extra_presets)
presets_str = ",\n ".join(presets)
html += f"""
presets: [ presets: [
SwaggerUIBundle.presets.apis, {presets_str},
SwaggerUIBundle.SwaggerUIStandalonePreset
], ],
})""" """
html += " })"
if init_oauth: if init_oauth:
html += f""" html += f"""

View File

@ -18,9 +18,6 @@ def test_swagger_ui():
assert "SwaggerUIBundle.presets.apis," in response.text, ( assert "SwaggerUIBundle.presets.apis," in response.text, (
"default configs should be preserved" "default configs should be preserved"
) )
assert "SwaggerUIBundle.SwaggerUIStandalonePreset" in response.text, (
"default configs should be preserved"
)
assert '"layout": "BaseLayout",' in response.text, ( assert '"layout": "BaseLayout",' in response.text, (
"default configs should be preserved" "default configs should be preserved"
) )

View File

@ -21,9 +21,6 @@ def test_swagger_ui():
assert "SwaggerUIBundle.presets.apis," in response.text, ( assert "SwaggerUIBundle.presets.apis," in response.text, (
"default configs should be preserved" "default configs should be preserved"
) )
assert "SwaggerUIBundle.SwaggerUIStandalonePreset" in response.text, (
"default configs should be preserved"
)
assert '"layout": "BaseLayout",' in response.text, ( assert '"layout": "BaseLayout",' in response.text, (
"default configs should be preserved" "default configs should be preserved"
) )

View File

@ -24,9 +24,6 @@ def test_swagger_ui():
assert "SwaggerUIBundle.presets.apis," in response.text, ( assert "SwaggerUIBundle.presets.apis," in response.text, (
"default configs should be preserved" "default configs should be preserved"
) )
assert "SwaggerUIBundle.SwaggerUIStandalonePreset" in response.text, (
"default configs should be preserved"
)
assert '"layout": "BaseLayout",' in response.text, ( assert '"layout": "BaseLayout",' in response.text, (
"default configs should be preserved" "default configs should be preserved"
) )