Postman传递@requestbody标注的List集合的传参遇到的问题
- 引子
- 如何测试以及遇到的问题
- 参考文献
引子
我们想测试如下接口
@RequestMapping(value ="saveMessageRecover", method = RequestMethod.POST)
@ResponseBody
public AjaxMessage saveMessageRecover(@RequestBody List<Device> deviceList,@RequestParam("eventId") Long eventId,@RequestParam("tagValue") String tagValue) {System.out.println(deviceList.toString());return emergencyDeviceRecoverService.saveMessageRecover(deviceList, eventId, tagValue);}
如何测试以及遇到的问题
@RequestMapping(value ="saveMessageRecover", method = RequestMethod.POST)
@ResponseBody
public AjaxMessage save(@RequestBody List<Device> deviceList,@RequestParam("eventId") Long eventId,@RequestParam("tagValue") String tagValue) {return emergencyDeviceRecoverService.saveMessageRecover(list, eventId, tagValue);}
这里对应了三个传入参数,因为deviceList是必须的,Device作为我们自己封装的JavaBean,我们想要直接传参的话,前端传递一个List过来,这个是被@Requestbody修饰的,同时还存在两个由@RequestParam修饰的包装类,因此,
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
-
为什么要使用@RequestBody,直接传不行吗?
当前端传来的是一个完整对象的时候,而且是以
json
格式传输,只有加上注解@RequestBody
,Spring 才会自动将 JSON 类型数据与我们的类进行匹配 -
返回给前端的是否为JSON类型?
使用@RestController注解或者@Controller+@Responbody注解
- postman如何传入list类型的参数?
我们遇到的问题?
- 一开始总是使用大括号包围这个Bean,实际上传入一个list不需要如此。
- 不确定如何传入一个@RequestBody和多个@RequestParam时,如何使用postman测试
如果想直接传一个list的对象集合,则不需要大括号;
如果是
public JSONObject updateProductStatus(@RequestParam(value = "ids",required = false) List<Integer> ids){
参考文献
-
postman入门学习
链接: postman入门学习 -
SpringMVC参数绑定学习总结【前后端数据参数传递】
链接: SpringMVC -
@RequestBody的使用
链接: RequestBody -
@RequestBody和@RequestParam区别全面详细
链接: RequestParam -
Postman测试接口传入List类型的参数以及数组类型参数
链接: Postman -
前后端交互--------后端传JSON给前端
链接: JSON