Python fastapi 内网访问swagger方法

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文件夹下
目录结构如下:

Python fastapi 内网访问swagger方法_第1张图片

一、我们可以让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:
	...

你可能感兴趣的:(python)