通过RestTemplate与HAL+JSON CURIEs交换Spring超媒体资源
我正在使用SpringFramework4.1.0和SpringHateoas0.16.0为该应用程序开发SpringWeb应用程序和SpringTestClient 测试客户端有如下语句:通过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&
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
} ]
}
}