diff --git a/docs/en/docs/how-to/configure-swagger-ui.md b/docs/en/docs/how-to/configure-swagger-ui.md index ff46dc5b1b..4643d23c01 100644 --- a/docs/en/docs/how-to/configure-swagger-ui.md +++ b/docs/en/docs/how-to/configure-swagger-ui.md @@ -60,8 +60,7 @@ FastAPI also includes these JavaScript-only `presets` settings: ```JavaScript presets: [ - SwaggerUIBundle.presets.apis, - SwaggerUIBundle.SwaggerUIStandalonePreset + SwaggerUIBundle.presets.apis ] ``` diff --git a/fastapi/openapi/docs.py b/fastapi/openapi/docs.py index bb387c609a..3cb0fe3b54 100644 --- a/fastapi/openapi/docs.py +++ b/fastapi/openapi/docs.py @@ -63,6 +63,14 @@ def get_swagger_ui_html( """ ), ] = "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[ str, Doc( @@ -119,6 +127,14 @@ def get_swagger_ui_html( """ ), ] = None, + swagger_extra_presets: Annotated[ + Optional[list[str]], + Doc( + """ + Extra presets to add to Swagger UI. + """ + ), + ] = None, ) -> HTMLResponse: """ Generate and return the HTML that loads Swagger UI for the interactive @@ -135,6 +151,13 @@ def get_swagger_ui_html( if 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'' for js_url in js_urls + ) + html = f""" @@ -147,7 +170,7 @@ def get_swagger_ui_html(
- + {scripts_str}