springboot接口参数为List

简单接口参数

springboot接口访问,如果是走http请求,那么参数会默认转换成键值对格式,或者是json字符串形式的。
springboot接口参数为List_第1张图片
今天就遇到一个场景,我需要一个list结构的参数,list里面又是对象,那我们该怎么传参呢?

我们不能再浏览器上直接拼接参数发请求了,例如:
springboot接口参数为List_第2张图片
这样的格式是不被允许的,请求会报错。

那么我们转换思路,既然是json格式的参数,那我们就传json格式

设置headers

Content-type 的值为application/json
springboot接口参数为List_第3张图片

组织传值参数list数据

在body中,传值参数,list 使用[]括起来
springboot接口参数为List_第4张图片

代码实现请求

public void queryLiveCourseInfoTest(){
   JSONArray jsonArray = new JSONArray();
   JSONObject json1 = new JSONObject();
   json1.put("dn","123");
   json1.put("bossCode","34455");
   jsonArray.add(json1);
   JSONObject json2 = new JSONObject();
   json2.put("dn","234");
   json2.put("bossCode","66666");
   jsonArray.add(json2);

   String arr = jsonArray.toJSONString();
   System.out.println("请求参数:"+arr);

   String url = nativUrl+"";
   try {
      HttpHeaders headers = new HttpHeaders();
      MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
      headers.setContentType(type);
      HttpEntity<ElecMeterDataApi> entity = new HttpEntity<ElecMeterDataApi>(arr,headers);
      String res = restTemplate.postForObject(url, entity, String.class);
      log.info("结果:"+res);
   } catch (RestClientException e) {
      log.error("请求异常" + e.getMessage());
   }
}

controller层设置两个注解@ResponseBody 和@RequestBody

@ResponseBody 没有该注解的时候,会发生postman 请求找不到error 404;

@RequestBody 没有该注解的时候,会发生参数值传输不过去;
springboot接口参数为List_第5张图片
这样我们就可以实现通过接口直接传递list对象数据。
其中,list中的对象,我们在传参数时只要组织的json格式的数据中,包含该对象的属性以及对应值,接口参数的对象就可以接收到该属性值。

你可能感兴趣的:(接口,java,接口)