FastApi框架可以直接生成自带的接口文档,但在使用的时候我们会碰到如下的真实需求。本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
1.测试环境提供接口文档并测试,但是线上环境不能暴露这些信息。
2.某些模块中我们可能有的方法不想暴露出来。
3.页面中显示的Schemas作用并不大,有时不如不展现。本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
怎么处理?FastApi提供了一些方法。本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
1. 要关闭接口文档,FastAPI在对象实例化的时候可以传递docs_url和redoc_url两个参数,用以配置这两个接口地址的自定义,同时也支持直接传None用以表示关闭接口方文档,如下:本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
from fastapi import FastAPI #关闭接口文档 app = FastAPI(docs_url=None, redoc_url=None) #开户接口文档 #app = FastAPI() #这样并不能关闭接口文档 app = FastAPI() app.docs_url=None app.redoc_url=None本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
需要注意的是,经过我尝试,要关闭必须在实例化的时候传递参数以关闭,并不支持实例化之后来修改。实际开发过程中都是通过配置文件区分现在的运行环境是线上还是测试,所以可以在实例化FastAPI前获取配置,根据配置来进行传参以实现线上关闭接口文档,测试环境启用接口文档。本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
2.如何关闭部分接口?要隐藏部分接口,我们只需要在路由配置上添加一个参数,include_in_schema=False 即可。本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
@app.post('/adminpass', include_in_schema=False) def mod_adminpass(data: data): pass本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
3.如何关闭Schemas本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
我真觉得Schemas没有什么用处,就像是这个接口文档真的没有其它什么东西可以展示的,然后加一些这个东西放在下面似的。反正没有人看。我找了找资料,以及查看了BaseModel的一些代码,目前还没有找到怎么快速关闭Schemas的办法,在fastapi的官方文档上也没有找到这类信息: https://fastapi.tiangolo.com/tutorial/sql-databases/?h=+schemas#create-initial-pydantic-models-schemas 欢迎知道的朋友评论回复。本文地址:http://8408.cn/article/936.html,未经许可,不得转载.
本文地址:http://8408.cn/article/936.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
手机扫码直接打开本页面 |