我有两个选择:
请求对象
restTemplate.exchange(url, HttpMethod.GET, entity, Object.class);
或请求JSON
restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
然后解析它。
幕后两个都将使用JSON,但是有没有约定或最佳实践?
答案 0 :(得分:1)
您可以为相应的json创建java对象,然后响应将自动序列化:
restTemplate.exchange(url, HttpMethod.GET, entity, MyResponseBean.class);
对于Java bean的生成,jsonschema2pojo很有用。
答案 1 :(得分:1)
我认为至少有两个原因更愿意RestTemplate
为您解组对象而不是首先检索String
:
如果直接检索String
,则必须先将整个结果读入内存,然后然后将其解析为对象模型。 RestTemplate
中的消息转换器有机会从响应InputStream
中逐字节地将其读入对象模型。当然,如果不将整个响应加载到内存中,他们可能无法构建对象图,但是至少通过这种方式,您不必执行两次。
但是更重要的是...当Spring具有经过战斗力,无限可配置的代码来为您执行此操作时,您为什么要自己这样做?
说,每当您从RestTemplate获得JSON响应时,您就自己处理:
MyThing thing = objectMapper.readValue(stringResult, MyThing.class);
...那一行甚至都不值得保存吗?与此相关,我认为JSON umarshalling本质上是一个跨领域的关注点,需要集中配置才有意义。