springboot接口参数为List的问题
简单接口参数
springboot接口访问,如果是走http请求,那么参数会默认转换成键值对格式,或者是json字符串形式的。
今天就遇到一个场景,我需要一个list结构的参数,list里面又是对象,那我们该怎么传参呢?
我们不能再浏览器上直接拼接参数发请求了,例如:
这样的格式是不被允许的,请求会报错。
那么我们转换思路,既然是json格式的参数,那我们就传json格式
设置headers
Content-type 的值为application/json
组织传值参数list数据
在body中,传值参数,list 使用[]括起来
代码实现请求
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 没有该注解的时候,会发生参数值传输不过去;
这样我们就可以实现通过接口直接传递list对象数据。
其中,list中的对象,我们在传参数时只要组织的json格式的数据中,包含该对象的属性以及对应值,接口参数的对象就可以接收到该属性值。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑
这篇文章主要介绍了Mybatis-Plus默认主键策略导致自动生成19位长度主键id的坑,本文一步步给大家分享解决方法,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-12-12Java中Object toString方法简介_动力节点Java学院整理
Object类在Java里面是一个比较特殊的类,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。接下来通过本文给大家介绍Object toString方法,需要的的朋友参考下吧2017-05-05MybatisPlus为何可以不用@MapperScan详解
这篇文章主要给大家介绍了关于MybatisPlus为何可以不用@MapperScan的相关资料,文中通过图文介绍的非常详细,对大家学习或者使用MybatisPlus具有一定的参考学习价值,需要的朋友可以参考下2023-04-04
最新评论