首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过RestTemplate与HAL+JSON CURIEs交换Spring超媒体资源

通过RestTemplate与HAL+JSON CURIEs交换Spring超媒体资源
EN

Stack Overflow用户
提问于 2014-10-31 01:40:42
回答 1查看 1.5K关注 0票数 0

我使用Spring Framework 4.1.0和Spring HATEOAS 0.16.0来开发Spring web应用程序和该应用程序的Spring测试客户端。

测试客户端有如下语句:

代码语言:javascript
复制
ResponseEntity<Resource<Calculation>> response = restTemplate.exchange(
  calculationsUri,
  HttpMethod.POST,
  new HttpEntity<Calculation>(calculation),
  new ParameterizedTypeReference<Resource<Calculation>>()
);

...wherein Calculation是一个带有杰克逊注释的POJO (例如,@JsonProperty)。

如果没有CURIEs,RestTemplate.exchange()调用就会成功:response.getBody().getLinks()将返回List<Link>的一个非空非空实例。

我的web应用程序具有非标准的链接关系,例如,“子计算”。我想用居里饼。

使用CURIEs,RestTemplate.exchange()调用失败:响应反序列化代码抛出org.springframework.http.converter.HttpMessageNotReadableException,这是由com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException引起的:‘无法读取JSON:无法识别的字段"name“(类org.springframework.hateoas.Link),未标记为可忽略(一个已知属性"href"])’

特别是,Jackson未能从响应JSON中的_links映射反序列化居里值到List<Link>-typed字段org.springframework.hateoas.ResourceSupport.links。响应JSON如下所示:

代码语言:javascript
复制
{
  "_links" : {
    "self" : {
      "href" : "..."
    },
    "myNamespace:sub-calculations" : [ {
      "href" : "..."
    }, {
      "href" : "..."
    } ],
    "curies" : [ {
      "href" : ".../{rel}",
      "name" : "myNamespace",
      "templated" : true
    } ]
  }
}

如何使用RestTemplate.exchange()获取其HAL+JSON ("application/hal+json")表示使用CURIEs的资源?

EN

回答 1

Stack Overflow用户

发布于 2014-11-07 02:19:26

看起来这个库根本不支持HAL链接对象https://datatracker.ietf.org/doc/html/draft-kelly-json-hal-06#section-5.5的name字段……实际上与居里的没有任何关系。你应该向该库提出一个问题,以支持HAL链接对象的所有字段。

就CURIE @CCCV而言,在您的示例中,它们的关键是AWALYS myNamespace:子计算,无论CURIE是否存在。CURIE只允许您取消对应该链接到文档的URL的引用。这有点奇怪,我看到实现总是把它搞错,认为URI才是最重要的。看,https://groups.google.com/d/msg/hal-discuss/lt0CnC3eev4/YinN1Us54KcJ,我不是说我同意it..but,这就是它应该的样子

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26659812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档