Postman传递@requestbody标注的List集合的传参遇到的问题
引子
我们想测试如下接口
@RequestMapping(value ="saveMessageRecover", method =RequestMethod.POST)@ResponseBodypublicAjaxMessagesaveMessageRecover(@RequestBodyList<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)@ResponseBodypublicAjaxMessagesave(@RequestBodyList<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
版权归原作者 是一个Bug 所有, 如有侵权,请联系我们删除。