Python fastapi 内网访问swagger方法

本文档介绍了内网环境下无法访问Swagger的原因,并提供了详细的解决方案。主要问题在于fastapi默认引用了CDN资源,导致内网访问显示空白。解决方法是下载swagger-ui相关文件并创建static文件夹,将文件放入其中,并在main.py中配置静态文件服务。同时,需要修改docs.py文件,以正确引用本地静态资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 为什么内网不可以访问swagger

答: 因为venv/lib/python3.6/site-packages/fastapi/openapi/docs.py文件默认是访问CDN中的 swagger-ui.cssswagger-ui-bundle.js,如果是内网环境则会在打开‘http://127.0.0.1:5000/docs’时,显示空白页面

2. 怎么做

备注: 需要现在网上下载swagger-ui, swagger-ui文件夹里面需要包含三个文件(favicon.png、swagger-ui.css、swagger-ui-bundle.js),然后新创建static文件夹,将swagger-ui文件夹放入到staitc文件夹下
目录结构如下:

在这里插入图片描述

一、我们可以让fastapi 启动时,提供静态文件服务,只需要在 'src/main.py’中增加:

app.mount('/static', StaticFiles(directory=os.path.join('/home/oper/incm-monitor-utp/', 'static/swagger-ui')), name='static')

二、然后修改文件venv/lib/python3.6/site-packages/fastapi/openapi/docs.py

def get_swagger_ui_html(
	*,
	openapi_ui: str,
	title: str,
	swagger_js_url: str="/static/swagger-ui-bundle.js",
	swagger_css_url: str="/static/swagger-ui.css",
	swagger_favicon_url: str="/static/favicon.png",
	oauth2_redirect_url: Optional[str] = None,
	init_oauth: Optional[dict] = None,
) -> HTMLResponse:
	...
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值