当前位置: 首页 > article >正文

解决基于FastAPI Swagger UI的文档打不开的问题

基于FastAPI Swagger UI的文档链接/docs/redoc在没有外网的状态下无法打开,原因是Swagger依赖的JS和CSS来自CDN。

https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js
https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css
https://fastapi.tiangolo.com/img/favicon.png
https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js

FastAPI可以配置这些链接地址,改为本地目录下,自定义Javascript和CSS的CDN地址
在这里插入图片描述

from fastapi import FastAPI
from fastapi.openapi.docs import (
    get_redoc_html,
    get_swagger_ui_html,
    get_swagger_ui_oauth2_redirect_html,
)

app = FastAPI(docs_url=None, redoc_url=None)

app.mount("/static", StaticFiles(directory="static"), name="static")

@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():
    return get_swagger_ui_html(
        openapi_url=app.openapi_url,
        title=app.title + " - Swagger UI",
        oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url,
        swagger_js_url="/static/swagger-ui/swagger-ui-bundle.js",
        swagger_css_url="/static/swagger-ui/swagger-ui.css",
        swagger_favicon_url="/static/swagger-ui/favicon.png",
    )


@app.get(app.swagger_ui_oauth2_redirect_url, include_in_schema=False)
async def swagger_ui_redirect():
    return get_swagger_ui_oauth2_redirect_html()


@app.get("/redoc", include_in_schema=False)
async def redoc_html():
    return get_redoc_html(
        openapi_url=app.openapi_url,
        title=app.title + " - ReDoc",
        redoc_js_url="/static/redoc/redoc.standalone.js",
        redoc_favicon_url="/static/redoc/favicon.png",
        with_google_fonts=False
    )

文件下载地址:
https://download.csdn.net/download/lilongsy/90355890

相关链接

https://fastapi.tiangolo.com/how-to/custom-docs-ui-assets/


http://www.kler.cn/a/538227.html

相关文章:

  • uniapp开发微信小程序请求超时设置【亲测有效】
  • xcode常见设置
  • 2月7日QT
  • Oracle Database Free版本的各项许可限制
  • 网络HTTP详细讲解
  • 【Go语言快速上手】第二部分:Go语言进阶
  • mysql 存储过程和自定义函数 详解
  • 2025年软件测试五大趋势:AI、API安全、云测试等前沿实践
  • (免费送源码)计算机毕业设计原创定制:C#+Asp.Net+SQL Server C#(asp.net)大学生创新创业项目管理系统
  • yolo11训练模型与测试
  • CNN-day8-经典神经网络GoogleNet
  • Android T(13) 源码分析 — BufferQueue 的分析
  • 【无标题】堆
  • F - Building Roads S
  • 实验5 配置OSPFv2验证
  • Kafka中的KRaft算法
  • 探秘 C++ list:在复杂数据管理的编程世界里,它宛如灵动的魔法链条,高效实现元素频繁增删,有序维系数据秩序,无论是海量动态数据缓存、游戏角色属性集处理,还是复杂任务调度编排
  • 网络通信小白知识扫盲(五)
  • deepseek本地部署-linux
  • 设计模式实战运用之模板方法模式
  • 算法兵法全略
  • 链表专题-01
  • Delphi语言的云计算
  • 【免费】2011-2020年各省长途光缆线路长度数据
  • Linux 调用可执行程序
  • pytest-xdist 进行多进程并发测试