接口测试之问题挖掘
Posted 自动化测试研究与应用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试之问题挖掘相关的知识,希望对你有一定的参考价值。
在平常的测试工作中,我们往往需要了解和理解前后端代码,这样能够很好地提高测试效率、丰富我们的案例。其中,在测试http接口时,测试工程师就需要去了解用什么样的编码格式调用接口传递参数。下面就来介绍下SpringBoot中的@RequestParam和@RequestBody两个注解,帮助我们更好的测试带有这两个注解的http接口。
1)@RequestParam总体上来说,该注解类拥有三个参数:
required
表示是否必须,默认为
true。
defaultValue
可设置请求参数的默认值。
value
为接收url的参数名(相当于key值)。
2)@RequestBody注解只拥有一个参数:
required 默认为 true,即对象中的属性必须有一个要传
@RequestParam用来处理
Content-Type
为
application/x-www-form-urlencoded
编码的内容。而注解@RequestBody一般用于处理非
Content-Type: application/x-www-form-urlencoded
编码格式的数据,比如:
application/json
、
application/xml
等类型的数据。
1)用Content-Type:application/x-www-form-urlencoded
后端响应2:参数添加@RequestParam注解
后端响应3:参数添加@RequestBody注解,虽然成功了,但是接收参数不正确。
后端响应4:参数用@RequestBody,但入参是一个Map,报错。
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
结论:当前端以application/x-www-form-urlencoded的格式传参时,后台可以使用@RequestParam或者不适用任何注解获取参数。后台不可以使用@RequestBody注解获取参数。
2)Content-Type:application/json
后端响应1:不加任何注解,接收到的参数都是null
后端响应2:参数添加@RequestParam注解,报错:
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'name' is not present]
后端响应3:参数添加@RequestBody注解,入参为Map
结论:当前端以application/json的格式传参时,后台支持@RequestBody注解,入参为Map或者一个javabean的形式。
以上是关于接口测试之问题挖掘的主要内容,如果未能解决你的问题,请参考以下文章
教育edusrc证书站点漏洞挖掘
JMeter接口测试-模块控制器
Hadoop MapReduce编程 API入门系列之挖掘气象数据版本2
Flask 编写http接口api及接口自动化测试
Jmeter组件之-Test Fragment(测试片段)
测试基础之集成测试(初入行)