1.fastapi解决默认文档打不开的方案
2.Fastapi访问/docs和/redoc接口文档显示空白或无法加载
3.API 接口开发没那么难,Python FastApi Web 框架教程来了!
fastapi解决默认文档打不开的方案
打开GitHub仓库,发现shu-s-project有个star,激发了我编写代码的热情。随后,中国源码会员我clone下来准备增加几个API。在调试过程中,意外发现FastAPI自带的文档无法打开,查看控制台后得知静态资源请求失败。由于众所周知的原因,jsdelivr被屏蔽,导致文档空白一片。
搜寻解决方案,有些方法建议将静态资源存放在本地,微源码社区或修改FastAPI源码,更改CDN地址以接入其他可访问的网络。这两种方案均不理想:前者意味着每个项目都需一套静态资源,失去了CDN的意义,后者则易受版本更新影响。GitHub上也有相关讨论,建议修改Swagger和Redoc的CDN或FastAPI源码中的参数。考虑到上述情况,我决定采用Beipy的方案,在主程序中编写一个函数主动替换CDN地址。代码如下:
原理见fastapi.tiangolo.com/re...,生成docs和redoc的函数参数中包含引用的CDN地址,因此只需修改这些参数即可。
然而,泛域名源码替换的js和css地址带有版本号,不同FastAPI版本可能使用不同版本的静态资源。尝试替换后,发现报错。这导致了新问题:每次都要去源码查看CDN版本并手动替换吗?这还不如使用本地方案。但办法总是比问题多,既然原始的get_swagger_ui_html函数提供了引用的CDN地址,我们只需直接获取参数值并替换前缀即可。使用unpkg而非知乎CDN,因为它更全。遵循这个思路,代码很快完成。
最终解决方案如下:
完整代码如下:
注:redoc也适用此方法,只需修改引入的源码管控fastapi.openapi.docs.get_redoc_html函数并替换redoc_js_url即可。
问题得到解决。
Fastapi访问/docs和/redoc接口文档显示空白或无法加载
fastapi自动生成的接口文档基于Swagger UI,但在内部局域网环境可能无法访问外网的cdn,导致docs接口文档无法自动生成。解决方法如下:
链接:链接
提取码:c8ha
推荐方法1:
示例代码如下:
- 问题源于fastapi使用了外网cdn来加载接口文档。
- 将本地静态文件static集成到项目中。
- 修改源码中的get_swagger_ui_html和get_redoc_html内容。
具体步骤:
- **方法1**:使用链接和提取码获取本地静态文件,将这些文件直接集成到fastapi项目中。
- **方法2**:不推荐修改源码,但若需手动修改,步骤如下:
1. **修改get_swagger_ui_html**:在fastapi配置中,更改文档生成的静态文件路径为本地文件系统路径。
2. **修改get_redoc_html**:同样,lnmpa源码编译调整redoc文档生成路径为本地静态文件路径。
完整代码示例:
- **方法1**的示例代码已通过链接提供,确保集成本地静态文件。
- **方法2**涉及修改源码部分,具体修改代码需根据fastapi配置文件和源码结构调整,确保文档相关部分引用的路径指向本地静态文件目录。
通过以上步骤,可在内部局域网环境下有效解决fastapi接口文档无法自动生成的问题,确保开发和测试环境下的文档可用性。
API 接口开发没那么难,Python FastApi Web 框架教程来了!
欢迎关注@Python与数据挖掘,专注 Python、数据分析、数据挖掘、好玩工具!
快来看看FastAPI的教程吧!
FastAPI是由Sebastian Ramirez开发的一款高性能的Web框架,让你的API接口开发变得轻松快捷。
学习FastAPI的原因有很多,比如其优秀的性能、简洁的代码结构、丰富的功能支持等。
开始之前,确保你已经安装了Python和Pycharm,了解基本的Python编程知识,然后创建项目工程,安装环境,最后安装fastapi。
在FastAPI中,你可以轻松地开启服务和接口访问,用json数据格式解析,生成在线API文档,发送POST请求,并使用各种请求格式。
获取URL参数和请求头参数也十分简单,表单获取数据同样支持,自定义返回JSON、HTML、文件、HTML页面都可轻松实现。
对于一些小案例,如代办事项,你可以在项目中添加相应的代码来实现。
如果你想要与数据库交互,FastAPI也支持绑定数据库,通过tortoise-orm和aiomysql进行数据库访问和写入,确保数据正确无误。
加入我们的技术交流群,获取更多资源,与来自各大名企的开发者交流互动。
关注@Python与数据挖掘知乎账号和微信公众号,获取最新优质文章。
推荐你浏览以下资源,提升你的Python编程技能:盘点个让工作效率倍增且有趣的Python库,如prettytable、推荐收藏!机器学习建模调参方法总结、推荐收藏!个机器学习最佳入门项目(附源代码)、没看完这 条,别说你精通Python装饰器、个VS Code神级插件、Schedule模块、Python周期任务神器、这4款数据自动化探索Python神器、个数据分析师必会的数据模型、真香啊!让Python编程起飞的个神操作、深度盘点:个用于深度学习、自然语言处理和计算机视觉的顶级Python、全网超详细!用户画像标签体系建设指南、机器学习模型验证,这3个Python包可轻松解决%的需求、精选个炫酷的可视化大屏模板、够强大!Python这款可视化大屏不足百行代码、深度盘点:字详细介绍Python中的7种交叉验证方法、精选字详细介绍Python中的7种交叉验证方法。