from fastapi import APIRouter, Request from fastapi.openapi.docs import ( get_redoc_html, get_swagger_ui_html, get_swagger_ui_oauth2_redirect_html, ) from fastapi.responses import HTMLResponse router = APIRouter() @router.get("/docs", include_in_schema=False) async def swagger_ui_html(request: Request) -> HTMLResponse: """ Swagger UI. :param request: current request. :return: rendered swagger UI. """ title = request.app.title return get_swagger_ui_html( openapi_url=request.app.openapi_url, title=f"{title} - Swagger UI", oauth2_redirect_url=str(request.url_for("swagger_ui_redirect")), swagger_js_url="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/5.17.14/swagger-ui-bundle.js", swagger_css_url="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/5.17.14/swagger-ui.css", ) @router.get("/swagger-redirect", include_in_schema=False) async def swagger_ui_redirect() -> HTMLResponse: """ Redirect to swagger. :return: redirect. """ return get_swagger_ui_oauth2_redirect_html() @router.get("/redoc", include_in_schema=False) async def redoc_html(request: Request) -> HTMLResponse: """ Redoc UI. :param request: current request. :return: rendered redoc UI. """ title = request.app.title return get_redoc_html( openapi_url=request.app.openapi_url, title=f"{title} - ReDoc", redoc_js_url="/static/docs/redoc.standalone.js", )