同步操作将从 Gitee 极速下载/FastAPI 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import jsonfrom typing import Any, Dict, Optionalfrom fastapi.encoders import jsonable_encoderfrom starlette.responses import HTMLResponsedef get_swagger_ui_html(*,openapi_url: str,title: str,swagger_js_url: str = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@3/swagger-ui-bundle.js",swagger_css_url: str = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@3/swagger-ui.css",swagger_favicon_url: str = "https://fastapi.tiangolo.com/img/favicon.png",oauth2_redirect_url: Optional[str] = None,init_oauth: Optional[Dict[str, Any]] = None,) -> HTMLResponse:html = f"""<!DOCTYPE html><html><head><link type="text/css" rel="stylesheet" href="{swagger_css_url}"><link rel="shortcut icon" href="{swagger_favicon_url}"><title>{title}</title></head><body><div id="swagger-ui"></div><script src="{swagger_js_url}"></script><!-- `SwaggerUIBundle` is now available on the page --><script>const ui = SwaggerUIBundle({{url: '{openapi_url}',"""if oauth2_redirect_url:html += f"oauth2RedirectUrl: window.location.origin + '{oauth2_redirect_url}',"html += """dom_id: '#swagger-ui',presets: [SwaggerUIBundle.presets.apis,SwaggerUIBundle.SwaggerUIStandalonePreset],layout: "BaseLayout",deepLinking: true,showExtensions: true,showCommonExtensions: true})"""if init_oauth:html += f"""ui.initOAuth({json.dumps(jsonable_encoder(init_oauth))})"""html += """</script></body></html>"""return HTMLResponse(html)def get_redoc_html(*,openapi_url: str,title: str,redoc_js_url: str = "https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js",redoc_favicon_url: str = "https://fastapi.tiangolo.com/img/favicon.png",with_google_fonts: bool = True,) -> HTMLResponse:html = f"""<!DOCTYPE html><html><head><title>{title}</title><!-- needed for adaptive design --><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1">"""if with_google_fonts:html += """<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">"""html += f"""<link rel="shortcut icon" href="{redoc_favicon_url}"><!--ReDoc doesn't change outer page styles--><style>body {{margin: 0;padding: 0;}}</style></head><body><redoc spec-url="{openapi_url}"></redoc><script src="{redoc_js_url}"> </script></body></html>"""return HTMLResponse(html)def get_swagger_ui_oauth2_redirect_html() -> HTMLResponse:html = """<!DOCTYPE html><html lang="en-US"><body onload="run()"></body></html><script>'use strict';function run () {var oauth2 = window.opener.swaggerUIRedirectOauth2;var sentState = oauth2.state;var redirectUrl = oauth2.redirectUrl;var isValid, qp, arr;if (/code|token|error/.test(window.location.hash)) {qp = window.location.hash.substring(1);} else {qp = location.search.substring(1);}arr = qp.split("&")arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';})qp = qp ? JSON.parse('{' + arr.join() + '}',function (key, value) {return key === "" ? value : decodeURIComponent(value)}) : {}isValid = qp.state === sentStateif ((oauth2.auth.schema.get("flow") === "accessCode"||oauth2.auth.schema.get("flow") === "authorizationCode") && !oauth2.auth.code) {if (!isValid) {oauth2.errCb({authId: oauth2.auth.name,source: "auth",level: "warning",message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"});}if (qp.code) {delete oauth2.state;oauth2.auth.code = qp.code;oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});} else {let oauthErrorMsgif (qp.error) {oauthErrorMsg = "["+qp.error+"]: " +(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +(qp.error_uri ? "More info: "+qp.error_uri : "");}oauth2.errCb({authId: oauth2.auth.name,source: "auth",level: "error",message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"});}} else {oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});}window.close();}</script>"""return HTMLResponse(content=html)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。