我正在使用Spring Framework 4.1.0和Spring HATEOAS 0.16.0为该应用程序开发Spring Web应用程序和Spring测试客户端。
测试客户端有这样的语句:
ResponseEntity<Resource<Calculation>> response = restTemplate.exchange(
calculationsUri,
HttpMethod.POST,
new HttpEntity<Calculation>(calculation),
new ParameterizedTypeReference<Resource<Calculation>>()
);
...其中计算
是带有Jackson注释的POJO(例如,@JsonProperty
)。
如果没有CURIE,RestTemplate.exchange()
调用成功:response.getbody(). getLinks()
返回List的非空非空实例
我的web应用程序具有非标准链接关系,例如“子计算”。我想用居里。
使用CURIE,
RestTemplate.exchange()
调用失败:响应反序列化代码抛出org.springframework.http.converter.HttpMessageNotReadableException
,原因是com.fasterxml.jackson.databind.exc.未识别的属性“名称”(类org.springframework.hateoas.链接),未标记为可忽略(一个已知属性“href”])
特别是,Jackson未能将响应JSON中的
_links
映射中的CURIE反序列化到List
{
"_links" : {
"self" : {
"href" : "..."
},
"myNamespace:sub-calculations" : [ {
"href" : "..."
}, {
"href" : "..."
} ],
"curies" : [ {
"href" : ".../{rel}",
"name" : "myNamespace",
"templated" : true
} ]
}
}
如何使用RestTemplate。exchange()
获取其HAL JSON(“应用程序/HAL JSON”)表示使用CURIEs的资源?
看起来库根本不支持HAL链接对象的名称字段https://datatracker.ietf.org/doc/html/draft-kelly-json-hal-06#section-5.5...与CURIE没有任何关系。您应该打开该库以支持HAL链接对象的所有字段。
就您的示例中的CURIE@CCCV而言,它们的关键是AWALYS myNamesspace:子计算,无论CURIE是否存在。CURIE只是让您取消引用应该链接到留档的URL。这有点奇怪,我看到实现总是出错,认为URI很重要。看https://groups.google.com/d/msg/hal-discuss/lt0CnC3eev4/YinN1Us54KcJ我不是说我同意它...但它应该是这样的
我现在正在读《实践中的Rest》一书。我无法理解以下术语超媒体,超媒体格式,超媒体控件,域应用协议。作者建议需要特定领域的超媒体格式。我很难理解这些。我在谷歌上搜索了这些术语,但没有找到正确的答案。谁能解释一下这些术语,以及为什么我们需要特定于领域的超媒体格式而不是应用程序/XML?
我有逻辑来拦截RestTemboard,我正在添加/注册该RestTemboard在配置文件中(SecurityConfiguration.java),但我想通过获取已注册的RestTemboard对象从另一个配置文件中添加该拦截器: 配置类: RestTemboard的实际逻辑,它将返回所需的拦截器和一些其他值(在返回此restTemboard时,我的拦截器也需要在此处添加,而不会覆盖现有值)或
本文向大家介绍多媒体资料库,包括了多媒体资料库的使用技巧和注意事项,需要的朋友参考一下 多媒体数据库用于存储多媒体数据,例如图像,动画,音频,视频以及文本。此数据以多种文件类型的形式存储,例如.txt(文本)、. jpg(图像)、. swf(视频)、. mp3(音频)等。 多媒体数据库的内容 多媒体数据库存储了多媒体数据和与其相关的信息。具体如下- 媒体数据 这是存储在数据库中的多媒体数据,例如
我的代码类似于以下示例: spring文档说: 使用Exchange()时,您必须始终使用ClientContent的任何正文或toEntity方法,以确保资源被释放,并避免HTTP连池的潜在问题。如果没有预期的响应内容,您可以使用body ToMono(Void.class)。但是请记住,如果响应确实有内容,连接将被关闭,不会放回池中。 问题:如果超时(…)触发TimeoutException在
超媒体点击事件的监听 超媒体消息的点击事件包括:点击打开链接url和点击打开app的原生页面;其中点击打开url链接使用setOnHyperUrlListener接口,方法如下: Ntalker.getInstance().setOnHyperUrlListener(new OnHyperUrlListener() { @Override public void OnOpenHyp
我有一个带有ui路由器的AngularJS应用程序,它使用带有超媒体的REST API。一般的想法是让API为其各种调用生成URL,并防止客户机自己构造URL。 还有别的想法吗? 除非我在这方面非常错误,否则我不是在寻找模板化的解决方案,即API返回一个url模板的解决方案,该url模板需要客户机注入参数。关键在于url已经填充了数据,因为有些url比上面提供的示例要复杂得多。