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

通过RestTemplate与HAL+JSON CURIEs交换Spring超媒体资源,spring,jackson,deserialization,spring-hateoas,curie,Spring,Jackson,Deserialization,Spring Hateoas,Curie,我正在使用SpringFramework4.1.0和SpringHateoas0.16.0为该应用程序开发SpringWeb应用程序和SpringTestClient 测试客户端有如下语句: ResponseEntity<Resource<Calculation>> response = restTemplate.exchange( calculationsUri, HttpMethod.POST, new HttpEntity<Calculation&

我正在使用SpringFramework4.1.0和SpringHateoas0.16.0为该应用程序开发SpringWeb应用程序和SpringTestClient

测试客户端有如下语句:

ResponseEntity<Resource<Calculation>> response = restTemplate.exchange(
  calculationsUri,
  HttpMethod.POST,
  new HttpEntity<Calculation>(calculation),
  new ParameterizedTypeReference<Resource<Calculation>>()
);

如何使用restemplate.exchange来获取其表示形式使用CURIEs的资源?

看起来该库根本不支持HAL link object的name字段……实际上与CURIE没有任何关系。您应该打开该库的一个问题,以支持HAL链接对象的所有字段


就您的示例中的CURIE@CCCV而言,它们的键是AWALYS myNamespace:子计算,无论CURIE是否存在。居里只是让你去引用一个应该链接到文档的URL。这有点奇怪,我看到实现一直错误地认为URI才是最重要的。看,我并不是说我同意……但这就是它应该是怎样的

客户端包括Spring HATEOAS吗?@zeroflagL:是的,客户端包括Spring HATEOAS。我认为Spring HATEOAS与Spring 4还不兼容。按照你的问题。。。你为什么要用居里夫人?除了缩短URI以提高可读性之外,他们没有向HAL添加功能,而且居里夫妇对所有HATEOAS框架的支持都非常不稳定。Traverson和Spring HATEOAS也不例外。居里夫妇实际上并没有给你这种优势。居里名称是JSON文档的本地名称,可以是任何名称。把它想象成一个XML名称空间前缀。居里夫人所做的唯一一件事就是提高API开发人员的可读性。
{
  "_links" : {
    "self" : {
      "href" : "..."
    },
    "myNamespace:sub-calculations" : [ {
      "href" : "..."
    }, {
      "href" : "..."
    } ],
    "curies" : [ {
      "href" : ".../{rel}",
      "name" : "myNamespace",
      "templated" : true
    } ]
  }
}