问题描述
我目前正在开发 Spring 应用程序客户端,该客户端使用来自第三方 API 的以下应用程序/json 响应。
JSON:(我知道这是 Spring Hateoas 表示的形式,我将其作为响应标头作为“application/json 所以也想探索 Traverson,但由于它不是 hal+json 而无法工作”)
{
"links": {
"next": {
"href": "/v1/names?page=1&size=2"
},"self": {
"href": "/v1/names"
}
},"data": [
{
"id": "5960c4ec","name": "1232323","data": {
"dataid": "cdsc","dataname": "csdc","some": null
},"references": [
{
"id": "...."
}
]
},{
"id": "34543535","data": {
"dataid": "ncsdcs","dataname": "cdscsdc","references": [
{
"id": "csdc"
}
]
}
]
}
Spring 数据类:
public class Data extends RepresentationModel<Data>{
private String name;
private String id;
..getter setter
}
Try1:responseEntity 不包含任何结果
HttpHeaders header = new HttpHeaders();
header.add("Authorization","basic ...");
HttpEntity<Data> httpEntity = new HttpEntity<>(header);
ResponseEntity<CollectionModel<EntityModel<Data>>> responseEntity = template.exchange(
new URI(akb),HttpMethod.GET,httpEntity,new ParameterizedTypeReference<CollectionModel<EntityModel<Data>>>() {});
Try2:responseEntity 不包含任何结果
HttpHeaders header = new HttpHeaders();
header.add("Authorization","basic ...");
HttpEntity<Data> httpEntity = new HttpEntity<>(header);
ResponseEntity<CollectionModel<PagedModel<Data>>> responseEntity = template.exchange(
new URI(akb),new ParameterizedTypeReference<CollectionModel<PagedModel<Data>>>() {});
Try3:responseEntity 不包含任何结果
HttpHeaders header = new HttpHeaders();
header.add("Authorization","basic ...");
HttpEntity<Data> httpEntity = new HttpEntity<>(header);
ResponseEntity<PagedModel<Data>> responseEntity = template.exchange(
new URI(akb),new ParameterizedTypeReference<PagedModel<Data>>() {});
我仍然可以使用 Object 的 ResponseEntity 并迭代结果,但是使用 hal 形式的 json 的最简单和最好的方法是什么。
我的应用程序中也有 resttemplate 配置:
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
mapper.registerModule(new Jackson2HalModule());
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON,MediaTypes.HAL_JSON,MediaType.ALL));
converter.setObjectMapper(mapper);
return builder.messageConverters(converter).build();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)