首页/新闻资讯/正文详情

FastAPI API 文档美化实战:4 步把默认 Swagger UI 换成你的品牌风格

发布时间:2026/11/4 1:43:00 来源:云帆数科 栏目:资讯中心
FastAPI API 文档美化实战:4 步把默认 Swagger UI 换成你的品牌风格
FastAPI API 文档美化实战4 步把默认 Swagger UI 换成你的品牌风格【免费下载链接】fastapiFastAPI framework, high performance, easy to learn, fast to code, ready for production项目地址: https://gitcode.com/GitHub_Trending/fa/fastapiFastAPI 的 API 文档界面开箱即用可默认 Swagger UI 千篇一律所有项目的顶栏、按钮、配色长得一模一样放进交付演示里很难体现品牌。下面这套 FastAPI 文档美化方案让你不动业务代码、不改路由用 4 步就能把/docs和/redoc换成你自己的视觉风格顺带解决内网离线访问的问题。这张是出厂状态蓝色GET条、灰白响应区、默认字体。你要做的是覆盖它、而不是重写它。5 分钟见效3 行代码给 Swagger UI 换上第一块品牌皮肤想让改动立刻可见别急着上静态文件。FastAPI()的swagger_ui_parameters会把字典原样转成 JSON 喂给 Swagger UI而 Swagger UI 恰好认customCss这个键——一段 CSS 字符串追加在默认样式之后不会把界面弄成白板。from fastapi import FastAPI app FastAPI(swagger_ui_parameters{ customCss: ( .swagger-ui .topbar { background: #2c3e50; } .swagger-ui .info h2 { color: #3498db; } ) })⚡ 起服务刷新/docs顶栏变深、API 标题变蓝第一个定制效果就有了。注意选择器都带了.swagger-ui前缀——这是让它盖住默认值、又不污染页面的关键。一键切换语法高亮主题改一个字典键皮肤只改了几处颜色代码块的高亮还是默认的暗色块。高亮主题走同一个字典键名用点号表示层级改一个键就行。app FastAPI(swagger_ui_parameters{ syntaxHighlight: {theme: obsidian}, deepLinking: True, })obsidian、monokai、nord、arta都能用不想要高亮就写syntaxHighlight: False。deepLinking这类默认值也能在这里覆盖改完 URL 会带上#锚点方便同事直接跳到某个接口。替换品牌色与交互按钮从内联 CSS 到独立文件规则一多塞在字典里就不好读了。把 CSS 挪进文件再用 Python 读进来传给customCss既保留追加行为又能像普通样式表一样维护。from pathlib import Path from fastapi import FastAPI brand_css Path(static/styles.css).read_text() app FastAPI(swagger_ui_parameters{customCss: brand_css})文件里只写有代表性的规则其余靠注释提示扩展点/* 顶栏换成深色品牌色 */ .swagger-ui .topbar { background: #2c3e50; } /* 响应按钮悬停上移 2px过渡 0.3s */ .swagger-ui .btn.execute { background: #3498db; transition: all 0.3s ease; } .swagger-ui .btn.execute:hover { background: #2980b9; transform: translateY(-2px); } /* 4xx/422 响应加红色左边条思路同上用 .response-col_status-4xx 选择器 */填参数、点 Execute 的这套交互态是你最想让访客记住的部分——按钮、输入框、Curl 代码块的配色都在customCss里改得到。离线/内网自托管让文档不依赖任何 CDN 前面几步样式都生效了但 Swagger UI 的 JS/CSS 默认走 jsDelivr。断网或内网部署时页面直接空掉。解法是先关默认文档再自己挂载并重新接上。下载并挂载三个文件把swagger-ui-bundle.js、swagger-ui.css、redoc.standalone.js放进static/浏览器右键另存为链接即可然后挂载目录from fastapi import FastAPI from fastapi.staticfiles import StaticFiles app FastAPI(docs_urlNone, redoc_urlNone) # 关掉默认,避免仍走 CDN app.mount(/static, StaticFiles(directorystatic), namestatic)重接 /docs 与 /redoc复用框架内部的 HTML 生成函数把资源 URL 指回本地。from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html app.get(/docs, include_in_schemaFalse) async def custom_docs(): return get_swagger_ui_html( openapi_urlapp.openapi_url, titleapp.title, swagger_js_url/static/swagger-ui-bundle.js, swagger_css_url/static/swagger-ui.css, ) app.get(/redoc, include_in_schemaFalse) async def custom_redoc(): return get_redoc_html( openapi_urlapp.openapi_url, titleapp.title, redoc_js_url/static/redoc.standalone.js, with_google_fontsFalse, # 内网也关掉 Google Fonts )with_google_fontsFalse是内网部署最容易漏的一行ReDoc 默认还要去 Google 拉字体。本地起服务后用curl http://127.0.0.1:8000/static/swagger-ui.css | head -c 60确认文件真的吐出来了再刷新/docs此时断开网络它照样能开。踩坑清单5 个最容易翻车的点把swagger_css_url指向自己的 CSS结果界面变白板。这个参数是替换默认样式表不是追加想要叠加品牌皮肤用customCss。改了 CSS 浏览器没反应。多半是缓存给文件加版本号?v2或换个文件名再刷一次。选择器太裸样式盖不住默认值。一定带.swagger-ui前缀必要时加到.swagger-ui .topbar这种两级别只写h2。/static撞上了业务路由。换个更具体的前缀如/assets或确认没有同名接口被它吞掉。离线页能开但字体还是外网请求。除了 JS/CSS别忘了with_google_fontsFalse否则 ReDoc 仍会连 Google。完整参数对照可查仓库里的 how-to/configure-swagger-ui 与 how-to/custom-docs-ui-assets教程源码在 docs_src/custom_docs_ui/。走到这里默认 Swagger UI 已经能变成你品牌的一部分而且内网、断网都不掉链子。再往下把customCss交给 Sass/Less 做主题变量、抽成一套可复用的设计 token多项目共享同一份视觉就是自然的下一步。【免费下载链接】fastapiFastAPI framework, high performance, easy to learn, fast to code, ready for production项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Osiris入门指南:用Next.js 16 + MapLibre搭建全球OSINT仪表盘
Osiris入门指南:用Next.js 16 + MapLibre搭建全球OSINT仪表盘

Osiris入门指南:用Next.js 16 MapLibre搭建全球OSINT仪表盘 【免费下载链接】osiris Open Source Global Intelligence Platform - Real-Time OSINT Dashboard - A Palantir Alternative - 2nZNHm3Lr9umG3DVrzYwHgktwkuKuJRXqqRqs3ewpump 项目地址: https://git… · 2026/11/4 1:43:00

如何快速构建智能交通流量预测系统:Hermes Agent机器学习模型应用指南
如何快速构建智能交通流量预测系统:Hermes Agent机器学习模型应用指南

如何快速构建智能交通流量预测系统:Hermes Agent机器学习模型应用指南 智能交通流量预测系统是现代城市管理的重要组成部分,而Hermes Agent作为一款强大的AI代理框架,提供了丰富的机器学习模型应用能力,帮助开发者快速实现这一目… · 2026/11/4 1:42:00

探索Hermes Agent的跨模态检索系统评估:精度与效率指标全解析
探索Hermes Agent的跨模态检索系统评估:精度与效率指标全解析

探索Hermes Agent的跨模态检索系统评估:精度与效率指标全解析 在人工智能快速发展的今天,跨模态检索系统已成为连接文本、图像、音频等不同数据类型的关键技术。Hermes Agent作为一款强大的AI代理框架,其跨模态检索能力通过多维度评估指标确… · 2026/11/4 1:42:00

生产没管好,不是因为难管,而是因为这12点
生产没管好,不是因为难管,而是因为这12点

生产现场最怕的是什么? 人员安排了,干活却不熟练; 生产计划下了,物料设备却没准备好; 管理人员天天巡查,问题还是反复出现; 每天忙到下班,产量、质量、交期却总有一项达不到要求。 看… · 2026/11/4 2:38:16

工业控制系统深度解析:33 液位控制回路
工业控制系统深度解析:33 液位控制回路

第33章 液位控制回路 33.1 液位控制为什么特殊? 液位(Level)是工业过程最常见的控制变量之一。典型对象:储罐、反应釜、锅炉汽包、水箱、分离器、缓冲罐。 表面看,液位控制很简单:液位高了减少进料,液位低了增加进料。但液位控制在工业中却是一个非常特殊的控制问题。… · 2026/11/4 2:38:16

微信小程序:文件操作
微信小程序:文件操作

一、项目简介本案例演示微信小程序FileSystemManager 文件管理器API,实现本地用户文件的:写文件、复制文件、读文件、获取文件信息。 作业扩展:新增删除文件按钮,实现删除复制出来的hello_copy.txt文件,页面标题与消息… · 2026/11/4 2:38:16

分类是科学的基础
分类是科学的基础

摘要:分类不是整理技巧,而是认知与科学的起点。米老师强调“分类是科学的基础”“生与死的差别”,本质上是指:分类决定你看到什么、如何解释、采取什么行动。分类弱和找关联弱往往是同一个瓶颈——缺少可用的类别结构。文章的推理… · 2026/11/4 2:38:16

Zig 系统编程也能如此简单
Zig 系统编程也能如此简单

第 1 章 为什么是 Zig 本章目标:搞清楚 Zig 是什么、解决什么问题、什么时候该用它、什么时候不该用它。我们会跑通第一个程序,并亲眼看见 Zig 的"安全网"如何在运行时抓住一个 C 语言里会静默变成安全漏洞的错误。 从入门到精通的实战之路 基于 Zig 0.17.0(2026-… · 2026/11/4 2:38:16

大型制造集团智能制造人才体系建设:三年人才规划怎么做【HR注意】
大型制造集团智能制造人才体系建设:三年人才规划怎么做【HR注意】

2026智能制造人才体系与战略HR规划指南|倍利福一家拥有8家工厂的制造集团,计划未来三年投入资金推进产线自动化、MES升级、设备数据采集和工业AI应用。 设备采购完成了,系统也陆续上线,但半年后发现:OT团队不懂软件&am… · 2026/11/4 2:37:16

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码