别人写的平台再垃圾,也是用来淘汰你的。
Python环境没有的,请自行安装,本教程采用的是python 3.9。
Django官网 https://www.djangoproject.com/
Node环境没有的,请自行安装,本教程采用的是node v17.6.0。
Vue.js官网 https://cn.vuejs.org/
接着上章,本章将完成接口的调试功能。
接口管理模块开发(七)
环境管理主要逻辑
上章完成的新增功能中可以看到接口只保存了路径,没有域名端口等信息,大概的设想是将其保存在环境信息中,选择不同的环境请求不同的IP/域名、端口。
因此在完成接口调试功能前先完成「环境管理」的增删改查功能,因为没有复杂的业务处理,可以查看前面的「项目管理模块开发」系列,这里不再进行详细介绍,主要步骤如下:
- 在后端项目中定义Model类,然后使用DRF的
ModelViewSet
快速定义接口,最后设置路由
- 在前端项目中新增页面,并且新增路由指向新页面,然后在新页面上使用Table组件进行数据展示;定义增删改查接口,并在相应的按钮事件中进行调用。
接口调试功能
环境管理功能开发完成后,就可以开始进行接口调试功能开发了。主要交互如下:
- 新增下拉框用于选择环境
- 选择环境后,点击接口信息右侧的【Send】按钮,将环境信息和当前页面的接口信息通过接口传给后端接口
- 后端接口中根据环境信息和接口信息进行处理后,使用
requests
模块访问接口 - 将接口返回的信息进行封装,按照「完整请求」、「响应内容」、「响应头」三部分进行返回
后端接口定义
- 首先后端自定义一个
ApiSendView
继承APIView
,然后定义一个post方法用来提供一个post类型的接口。 - 因为接口信息跟接口保存的参数一致,可以使用ApiSerializer进行解析。而环境信息需要单独从请求体中获取。
class ApiSendView(APIView):
def post(self, request):
api = ApiSerializer(request.data).instance
env = ''
if 'env' in request.data:
env = request.data['env']
- 因为要使用
requests
模块来发送请求,因此需要先安装requests
(参考前面章节,不再赘述),安装完成后,在项目目录下新增一个utils
目录存放项目用到的工具,然后在utils
下新增一个request_util.py
文件,专门用来处理请求,新增方法用来拼接请求参数和处理响应数据,具体代码如下。
def request_by_api(env: Env, api: Dict) -> Response:
return request_by_domain(domain=env.domain,
protocol=env.protocol,
port=env.port,
path=api["path"],
params=api["params"],
body=api["body"],
body_type=api["body_type"],
headers=api["headers"],
method=api["method"]
)
def request_by_domain(
domain: str,
port: str,
path: str,
params: str,
body: str,
headers: str,
protocol: str = "HT