接口测试平台-41:接口底层请求逻辑

后台代码处理,就是点击Send按钮,调用requests来发送请求,并把返回值显示到调试层的返回体中即可。打开P_apis.html

 

1. 给调试层的Send按钮,添加onclick功能

 

2. 设计js函数ts_send()

现在来设计一下这个函数:

  • 首先要获取这个接口当前所有的数据,用户正在选择的编码格式和请求体。
  • 然后发出请求给后台传递这个接口的所有数据。
  • 接受到后台返回值后,直接切换到返回体子页面,并把返回值显示到返回体的多行文本框中。

(获取各种接口数据的代码和保存接口的函数中基本相同,所以基本可以直接复制)

 

要注意修改请求url为/Api_send/,返回值处理方式也做了变更

 

添加映射:

urls.py

url(r'^api_send/$', api_send),  # 调试层发送请求

views.py,复制save函数到send函数

# 调试层发送请求
def api_send(request):
    # 提取所有数据
    api_id = request.GET['api_id']
    api_name = request.GET['api_name']
    ts_method = request.GET['ts_method']
    ts_url = request.GET['ts_url']
    ts_host = request.GET['ts_host']
    ts_header = request.GET['ts_header']
    ts_body_method = request.GET['ts_body_method']
    ts_api_body = request.GET['ts_api_body']

    # 发送请求获取返回值(先空着)

    # 把返回值传递给前端页面(先写死)
    return HttpResponse('{"code": 200}')

 

先没做发送请求的代码,而是先写死了个demo返回值。重启服务,刷新页面。点击一下send按钮看看:

 

3. 这里选择4,不用此办法;修复bug:发送请求的子标签是返回体,报错;应该禁止Send + 保存(粗略实现)

 

抽离body

修改返回体3个字为Response

 

看看效果

 

4. 在response中继续发送请求怎么办?

记住用户上一次选择的请求体编码格式和请求体。接口表加俩个字段,一个是上次的请求体方式,一次是上次的请求体。

last_body_method = models.CharField(max_length=20, null=True)  # 上次请求体编码格式
last_api_body = models.CharField(max_length=1000, null=True)  # 上次请求体

执行并生效:

python manage.py makemigrations

python manage.py migrate

 

执行成功后,切换回P_apis.html中,当用户选择激活的子页面是编码格式时,才会定义声明ts_api_body这个变量

那么当选择激活的是返回体子页面时候,自然这个变量不存在,所以报错了。

那么解决办法就是,当请求体编码格式这个函数,当它为#response时。后台要对其进行处理,选用上一次的请求体编码格式和请求体内容来进行再次请求。

所以我们去后台编写ts_send()函数:

# 当是返回体时,则执行上次的结果
ts_body_method = request.GET['ts_body_method']
if ts_body_method == 'Response':
    api = DB_apis.objects.filter(id=api_id)[0]
    ts_body_method = api.last_body_method
    ts_api_body = api.last_api_body

    # 当没有请求模式时,则报错
    if ts_body_method in ['', None]:
        return HttpResponse('请先选择好请求体编码格式和请求体,再点击Send按钮发送请求!')

else:
    ts_api_body = request.GET['ts_api_body']
    api = DB_apis.objects.filter(id=api_id)
    api.update(last_body_method=ts_body_method, last_api_body=ts_api_body)

去掉之前的判断alert,3,看看效果

 

5. 保存

场景1:用户设置好请求体编码格式和内容后,直接点击保存按钮。这时什么问题都没有,保存成功。

场景2:用户设置好请求体编码格式和内容后,点击Send按钮测试了一下,发现返回体没问题,这时他就会直接点击保存按钮。

那么俩个字段数据从哪来呢?当然是上一次的俩个last字段了。因为请求时,已经保存了这次的请求体编码格式和内容了。

所以我们找到保存函数,按如下方式更改:

# 当是返回体时,则执行上次的结果
ts_body_method = request.GET['ts_body_method']
if ts_body_method == 'Response':
    api = DB_apis.objects.filter(id=api_id)[0]
    ts_body_method = api.last_body_method
    ts_api_body = api.last_api_body

    # 当没有请求模式时,则报错
    if ts_body_method in ['', None]:
        return HttpResponse('请先选择好请求体编码格式和请求体,再点击Send按钮发送请求!')

else:
    ts_api_body = request.GET['ts_api_body']  

 

测试一下。

新建了一个接口,然后在form-data中输入几行参数,然后点击Send按钮,等到返回体子页面激活后,直接点击保存按钮。弹层自动关闭。再打开看看是否保存成了。发现保存成功了,自动切换到了form-data上并且显示了刚刚输入的几行参数。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值