首页 / 资讯中心 / 文章详情

FastAPI 文档界面样式定制指南:从改一个参数到完全离线自托管

FastAPI 文档界面样式定制指南:从改一个参数到完全离线自托管 ★ FEATURED ARTICLE
FastAPI 文档界面样式定制指南从改一个参数到完全离线自托管【免费下载链接】fastapiFastAPI framework, high performance, easy to learn, fast to code, ready for production项目地址: https://gitcode.com/GitHub_Trending/fa/fastapiFastAPI 自带 Swagger UI 和 ReDoc 两套 API 文档界面/docs和/redoc两个页面开箱即用但配色、按钮、代码高亮都由上游默认值决定。想调整文档样式改动只发生在三个层面内置参数、静态资源地址、CSS 规则。下面按由浅入深的顺序给出每一层能直接跑起来的最小做法。默认界面长什么样改样式之前先固定一个对照基准启动应用后/docs是蓝色顶栏的 Swagger UI可展开填写请求参数并点 Try it out 发请求/redoc是单栏排版的 ReDoc适合只读浏览。这两个页面的 HTML 模板和资源 URL 定义在 fastapi/openapi/docs.py。默认情况下页面的 JS 和 CSS 都从 jsDelivr CDN 加载swagger-ui-bundle.js、swagger-ui.css、redoc.standalone.js服务器没有外网时文档页会直接白屏——这是后面第二层要解决的问题。三层定制路径调内置参数最省事的一层如果只是想换代码高亮配色或者给响应区加上耗时显示不需要动任何静态文件把swagger_ui_parameters传给FastAPI构造函数即可from fastapi import FastAPI app FastAPI( swagger_ui_parameters{ syntaxHighlight.theme: monokai, displayRequestDuration: True, } )syntaxHighlight.theme可取arta、monokai、nord、obsidian这几个值来自 Swagger UI 内置的高亮主题表。这些参数会被原样写进/docs页面的初始化脚本改完重启即可看到效果。自托管静态资源离线部署的关键一步把文档页需要的三个文件保存到自己的static/目录然后挂载静态目录from fastapi import FastAPI from fastapi.staticfiles import StaticFiles app FastAPI(docs_urlNone, redoc_urlNone) app.mount(/static, StaticFiles(directorystatic), namestatic)docs_urlNone和redoc_urlNone先关掉自动生成的文档再用自己的路由生成文档页。从fastapi.openapi.docs导入get_swagger_ui_html把资源地址指向自己app.get(/docs, include_in_schemaFalse) async def swagger_ui_html(): return get_swagger_ui_html( openapi_urlapp.openapi_url, swagger_css_url/static/swagger-ui.css, swagger_js_url/static/swagger-ui-bundle.js, )get_redoc_html同理只需要传redoc_js_url。验证方式很直接断开外网刷新/docs页面能正常渲染就说明自托管生效了。这套完整写法可以参考 docs_src/custom_docs_ui/tutorial002_py310.py。完整 CSS 覆盖改到像素级资源落到本地之后样式就有了任意修改权。最简单的方式是把自己的规则追加进本地swagger-ui.css文件末尾不需要再写任何 Python 代码.swagger-ui .topbar { background-color: #2c3e50; }定位元素的套路整个界面挂在一个.swagger-ui容器下顶栏是.topbarAPI 标题在.info区块里。ReDoc 页面则整体包在redoc类名下写redoc .sidebar { ... }这类规则就能单独调整侧栏。拿来即用的效果配方响应状态码配色——让 2xx 和 4xx 响应一眼可辨把下面规则放进本地 CSS 即可.response-col_status-200 { background: #eafaf1; border-left: 4px solid #2ecc71; } .response-col_status-4xx { background: #fdedec; border-left: 4px solid #e74c3c; }按钮交互反馈——给 Try it out 按钮加深 hover 色并加一点上浮一行规则就够.swagger-ui .btn.execute:hover { background-color: #2980b9; transform: translateY(-2px); }。语法高亮主题切换——回到第一层的参数把syntaxHighlight.theme的值在arta、nord、obsidian之间换整页 JSON 的着色方案随之改变不用碰 CSS。上线前检查清单资源体积swagger-ui-bundle.js有 MB 量级内网部署前确认带宽预算必要时让反代层接管静态文件浏览器缓存给自托管的 JS/CSS 加较长的max-age缓存头CSS 改过版本后先强刷再验收离线流程断网加载/docs和/redoc各跑一遍别只测其中一个ReDoc 的特殊性它没有独立的 CSS 文件样式都打包在redoc.standalone.js里要改外观只能走 CSS 覆盖回归三个地址/docs、/redoc、/openapi.json都手动点开确认多数场景下第一层的参数加上几条 CSS 规则就能让文档页和项目风格统一只有离线、内网或强品牌诉求才值得把资源整套搬进自己的应用。延伸阅读文档页 HTML 模板与默认资源地址fastapi/openapi/docs.py官方自托管静态资源示例docs_src/custom_docs_ui/tutorial002_py310.py自托管文档资源的 how-to 文档docs/en/docs/how-to/custom-docs-ui-assets.md【免费下载链接】fastapiFastAPI framework, high performance, easy to learn, fast to code, ready for production项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站