比如下面这个算是很常见的了
{
"code":200,
"msg":"success",
"data":[
{
"id":1,
"name":"jack"
},
{
"id":2,
"name":"rose"
}
]
}
按照resttemplate map response to pojo关键字搜了半天居然没找到合适的方案
现在就想知道,针对这种返回体,使用 postEntity 或者 postObject 方法,resttemplate 有没有一些更优雅的处理方式?
1
chendy 2022 年 8 月 8 日
个人经验
1. RestTemplate 拿 String 2. 自己做转换,这样如果遇到解析出错的情况,可以把原始 json 字符串打日志出来,方便排查 因为 RestTemplate 默认是用 Content-Type 判断如何反序列化,如果遇到(经常遇到) Content-Type 不好好给的接口,就要重新配置 MessageConverter ,就更麻烦 自己做转换可以自己封装 Response<T> -> UserResponse extends Response<User> 这样的类型,或者用 json 库相关的机制转换也可以 |
2
uSy62nMkdH OP |
3
LeegoYih 2022 年 8 月 8 日 |
4
wolfie 2022 年 8 月 8 日
org.springframework.web.client.RestTemplate#exchange
exchange 不是可以指定 ResponseEntity 泛型。 |
5
damai0419 2022 年 8 月 8 日
直接 postEntity/Object 的没有,只有 exchange 的有,不过封装一层也不麻烦。
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables) ParameterizedTypeReference<T> responseType 这个字段是用来指定返回值的,支持了泛型嵌套能力。 |
7
lazyfighter 2022 年 8 月 8 日
我都是自己封装 httpUtil
|
8
nekoneko 2022 年 8 月 8 日
ParameterizedTypeReference<List<String>> ptr = new ParameterizedTypeReference<List<String>>() {};
ResponseEntity<List<String>> res = restTemplateBuilder.build() .exchange(uriTemplate, HttpMethod.GET, null, ptr); 这样可以 |
9
zhangxzh 2022 年 8 月 8 日 via Android
这东西为什么单独拿出来用
|
10
RedBeanIce 2022 年 8 月 8 日
@LeegoYih springboot 项目直接引入 openfeign 嘛,,,好像挺不错的诶。。
|
11
Leviathann 2022 年 8 月 8 日
这破玩意的 api 突出一个乱七八糟
|
12
zhangxzh 2022 年 8 月 9 日 via Android @RedBeanIce 单独的 feign 应对简单客户端就足够了,openfeign 的间接依赖太重而且即使新版好像还挂着 cve 的牌子。同时欢迎换用 reative 和 WebClient
|
13
xiangyuecn 2022 年 8 月 9 日
一律一把梭 益寿延年😂
|
14
Vaspike 2022 年 8 月 9 日
一楼正解,用 String+Jackson 可保平安
|
15
fuxinya 2022 年 8 月 9 日
springboot openfeign + 1
国内这些个厂商,提供的 API 经常不遵守标准,明明是个 json ,返回的 Content-Type 却是 text/plain 我甚至见过这样的:Content-Type:application/json:charset=UTF-8;charset=UTF-8 ,给他们提 bug 还说这关 Spring 框架什么事?没办法,自己搞个 Decoder 修改响应头适配呗。 |
16
kytrun 2022 年 8 月 9 日
同 feign ,前几天刚写了一篇关于 [Spring Cloud Feign 去除全局包装、统一异常处理]( https://kytrun.com/spring-cloud-feign-unwrap-and-exception/) 的文章
|