如何通过form-data或json传递数组形式的入参,后端如何识别并处理数组入参,并通过Apipost发送数组形式的入参进行测试

1. 总体概述

        如果某个post请求的入参是数组形式,在进行接口测试的时候,如何通过Apipost工具进行测试,并且后端如何识别并处理数组形式的入参呢?

        传递包括数组的入参,前端代码以及接口测试工具均可以通过form-data或者json的方式进行传输带数组的入参,后端要对前端传过来的入参进行数据格式判断,然后调用不同的方法进行获取。

2. form-data方式传输

        这种方式只能一对一的通过key-value的方式传递字符串,为了传递数组类型的入参,可以通过对同一参数名进行多次传输参数值的方式来达到数组元素的传递,如图所示:

        千万不要试图通过在参数值内填写 [ "terminal" , "terminal-report" ] 和 [ "项目1" ] 这种方式来实现数组的传递,接口只会将整个内容视为一个字符串,可以通过右上角的导出参数来进行验证,也可以通过后端代码的打印进行验证,即使在Apipost界面内,将参数名的右边设置为Array 也无济于事,这是form-data传输机制所决定,参数值只能是一个string类型。

3. json 方式传输

        如果通过json方式进行参数传输,相对来说就比较简单了,可以在key-value值中直接写上数组形式,这会在传输过程中,后端通过参数名获取到为数组形式的参数值,且格式为数组,而不是一个字符串。

4. 后端的识别和处理

        为了兼容这两种数据格式的入参传入,首先要使用判断语句对传入的参数格式进行判断。然后根据不同数据传入格式,采用不同的方法去获取数据。具体代码如下:

if request.form:
    params = request.form
    permissionNames = params.getlist('permissionNames')
    ProjectNames = params.getlist('ProjectNames')
else:
    params = request.json
    permissionNames = params.get('permissionNames', [])
    ProjectNames = params.get('ProjectNames', [])

        值得注意的是,如果是form-data方式进行数组参数传输,需要对参数名采用getlist()方法获取数据,这样得到的才是一个数组,如果采用get()方式获取数据,只能获取到对应参数名最后一次传输的参数值,而且是一个字符串。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值