@modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
在平常的测试工作中,我们往往需要了解和理解前后端代码,这样能够很好地提高测试效率、丰富我们的案例。其中,在测试http接口时,测试工程师就需要去了解用什么样的编码格式调用接口传递参数。下面就来介绍下SpringBoot中的@RequestParam和@RequestBody两个注解,帮助我们更好的测试带有这两个注解的http接口。
1.拥有不同的参数
1)@RequestParam总体上来说,该注解类拥有三个参数:
required
表示是否必须,默认为
true。
defaultValue
可设置请求参数的默认值。
value
为接收url的参数名(相当于key值)。
2)@RequestBody注解只拥有一个参数:
required 默认为 true,即对象中的属性必须有一个要传 2.处理不同的编码格式 @RequestParam用来处理Content-Type
为
application/x-www-form-urlencoded
编码的内容。而注解@RequestBody一般用于处理非
Content-Type: application/x-www-form-urlencoded
编码格式的数据,比如:
application/json
、
application/xml
等类型的数据。
3.例子
1)用Content-Type:application/x-www-form-urlencoded
前端请求:
后端响应1:传参对应,没有任何注解,
后端响应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的形式。