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()可以有多个。

  1. 为什么要使用@RequestBody,直接传不行吗?

    当前端传来的是一个完整对象的时候,而且是以 json格式传输,只有加上注解@RequestBody,Spring 才会自动将 JSON 类型数据与我们的类进行匹配

  2. 返回给前端的是否为JSON类型?

使用@RestController注解或者@Controller+@Responbody注解

  1. 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

更多推荐