FastApi 自带的接口文档,如果上线的话那么接口就直接暴露了,任何人只要在你的网址后面加上/docs就能看到非常不安全。

 

1、关闭部分接口

如何关闭部分接口?例如我做的这个服务,本身就是公共 API,就是拿给大家用的,只有几个核心接口隐藏一下,其他接口直接公开。

要隐藏部分接口,我们可以在路由装饰器上面添加一个参数include_in_schema=False,如下图所示:

2、隐藏说有接口

在初始化 FastApi 对象的时候,增加一个参数就可以了。这里是隐藏/docs接口

app = FastAPI(docs_url=None)

如果全都隐藏  用下面的命令

app = FastAPI(docs_url=None, redoc_url=None)

 

3、如何自动切换

我们可以使用环境变量来自动控制,实现只有显式添加环境变量env=develop的时候才显示文档,其他情况下都不显示。部分代码如下:

import os
from fastapi import FastAPI

env = os.getenv('env')
if env != 'develop':
    app = FastAPI(docs_url=None, redoc_url=None)
else:
    app = FastAPI()

当我们在自己电脑上开发的时候,我们在环境变量中添加一项env,它的值为develop,于是文档自动打开。当我们部署到线上环境的时候,把env的值设置成prod或者不设置,那么文档自动关闭。