gpt4 book ai didi

java - Spring RestTemplate - ResponseBody 类是什么样子的

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:11 24 4
gpt4 key购买 nike

我有一个非常简单的休息客户端,我想将服务响应解析为自定义 ResponseBody 类:

ResponseEntity<CustomResponseBody> entity = restTemplate.postForEntity(uri, request, CustomResponseBody.class);

实际的问题是 CustomResponseBody 类在 setter、getter 和构造函数方面应该是什么样子,假设我正在使用的服务的输出是这样的 JSON:

{item1:something, item2:otherthing}

我的 makeRestTemplate 方法是:

    @Bean
public RestTemplate makeRestTemplate() {
RestTemplate restTemplate = new RestTemplate();

HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(TIMEOUT_MILLIS);
requestFactory.setReadTimeout(TIMEOUT_MILLIS);
restTemplate.setRequestFactory(requestFactory);
restTemplate.setErrorHandler(errorHandler);

List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonConverter = (MappingJackson2HttpMessageConverter) converter;
ObjectMapper objectMapper = makeObjectMapper();
jsonConverter.setObjectMapper(objectMapper);
jsonConverter.setSupportedMediaTypes(Arrays.asList(new MediaType("application", "json", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET),
new MediaType("text", "javascript", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET)));
}
}

return restTemplate;
}

我让它与lombok的注释@Data一起工作,但我想知道customResponseBody类实际解析响应的最低要求是什么。

更新:

一个简单的 POJO 就可以完成这项工作,我在尝试实现自定义 setter 和 getter 方法时遇到了一些问题,看起来除了普通 getter 和 setter 方法之外的任何内容都会导致绑定(bind)过程失败。

已接受

import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@Data
public class CustomResponseBody {
private String item1;
private String item2;
}

未接受

import lombok.Setter;
import lombok.Getter;
import lombok.NoArgsConstructor;

@NoArgsConstructor
public class CustomResponseBody {

@Getter
@Setter
private String item1;

@Getter
private String item2;

public void setItem2(String item2) {
if ("something".equals(item2)) {
this.item2 = "whatever";
} else {
this.item2 = "otherstuff"
}
}
}

最佳答案

这应该是简单的 POJO 实现 Serialized,预先启用的 HttpMessageConverters 应该能够根据 headers 中的 Content-Type 转换任何 Serialized POJO。

关于java - Spring RestTemplate - ResponseBody 类是什么样子的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39934984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com