Python fastapi 内网访问swagger方法

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

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:
	...
FastAPI是一个现代、快速的Python Web框架,用于构建API。它基于Python 3.8+和标准的Python类型提示,具有极高的性能。FastAPI的关键特性包括: 1. 快速:FastAPI的性能可以与NodeJS和Go等其他高性能框架媲美,这得益于其基于Starlette框架构建的异步支持和高性能的请求处理。 2. 自动文档生成:FastAPI集成了Swagger UI,可以自动生成API的交互式文档。通过访问API的URL,您可以在浏览器中查看和测试API的各种端点、请求和响应。 3. 类型提示:FastAPI使用Python的类型提示来定义请求和响应的数据模型。这不仅使代码更易于阅读和维护,还提供了自动的数据验证和转换功能。 4. 异步支持:FastAPI基于异步框架Starlette,可以处理大量并发请求,并且可以与异步数据库和其他异步库无缝集成。 5. 安全性:FastAPI提供了内置的身份验证和授权支持,可以轻松地保护您的API端点。 Swagger是一个用于设计、构建和文档化RESTful API的开源工具集。它提供了一种简单的方式来描述API的结构、请求和响应,并生成交互式文档。Swagger UI是Swagger的一个用户界面,可以通过浏览器访问API的交互式文档。 FastAPI集成了Swagger UI,因此您可以使用FastAPI构建API,并自动生成具有交互式文档的Swagger UI。这使得开发人员和用户可以方便地查看API的详细信息、测试API的各种端点和参数,并了解API的使用方式。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值