构建RESTful API的关键之一是HATEOAS。 现在,泽西岛提供了很好的链接能力(见这个链接 )。 但我已经看到了HAL规范的草案,它似乎是一个经过深思熟虑的工作。

如果有一些lib可以很容易地在泽西岛坚持HAL,我感兴趣。 我已经看到草案中提到的引用,如https://github.com/HalBuilder 但是我使用的是直接POJO编组,我不知道如何将它与Halbuilder混合使用。

那么,是否已经有一些将HAL纳入泽西的库? 或者我可以使用某种过滤器手动增强生成的POJO? 如果是的话,有人可以给我一个线索在哪里看到下一步来完成这个?

#1楼 票数:2

我在泽西岛找不到任何直接的支持,但是应该有方法来定制Jersey用来将你的POJO转换为JSON的编组器。 (通过使用HalBuilder,或创建一些自己的HAL兼容代码)

如果您使用基于 Jerseys JAXB的JSON支持 ,请查看jettison源代码中的BootstrapTypeConverterTest ,该代码演示了如何使用转换器来定制JSON输出。 对JSON进行单元测试转换应该是一项简单的任务,而jettison-project有很好的例子可供查看。

如果您使用Jerseys “POJO Support”方法 ,请查看JacksonHowToCustomSerializers,了解有关如何创建自定义序列化程序的类似示例。

(如果涉及到JAXB,您还可以执行诸如处理自定义注释之类的很酷的事情。)

您可能非常了解对象(输入)的外观以及您期望的JSON代码(输出),因此为这些转换创建单元测试应该是一项相对简单的任务。

#2楼 票数:1

即使这不是一个真正的答案,我没有足够的字符把它放在评论中:)

如果你真的是REST的新手,我认为你的开始可能是错误的。 我不确切地知道你的要求,但是如果你只想学习,从简单的REST服务开始,使用.net中的Web API或类似的Java(一个简单的servlet就足够了)并尝试实现一个服务仅使用http提供的工具(动词,请求标头和有效负载,响应消息)。 来自MarcMassé的REST API设计规则手册可以成为学习的好参考。 使用POJO或POCO创建自己的通信协议,一旦您确实可以执行REST以及它如何工作,您就可以使用框架来简化您的工作。

如果您从框架开始,您可能会错过概念的本质......

我希望它有所帮助!

#3楼 票数:0

遵守HAL所需要的很少。 我建议您滚动自己的迷你库,在那里将POJO包装在HAL对象中。 通过这种方式,您可以按照自己喜欢的方式获取代码,这将比HalBuilder更简单。

  ask by Robert Kühne translate from so

未解决问题?本站智能推荐:

1回复

Jersey使用RolesAllowed声明链接权限

我想将Jersey的DeclarativeLinking功能与RolesAllowed功能结合起来。 我能够成功地将链接注入响应,但该注入不关注该端点的RolesAllowed注释。 举个例子,想象两个用户。 称他们为管理员和用户。 两者都可以访问GET资源,但只有管理员可以访问
4回复

在现实世界中使用Restful Web服务是否值得实现HATEOAS?

如果我将现有的Restful Web服务转换为尽可能的HATEOS,我一直在阅读很多关于潜在好处的内容。 我理解在有效负载中提供链接的重要性,以减少消费者在记住下一个有效可用操作时的负担。 但是,我似乎无法理解它将如何帮助我的Restful Web服务的消费者实际上。 为了说明这一点,
1回复

HAL和HATEOAS之间的关系和区别

HATEOAS (超媒体作为应用程序状态的引擎)和HAL (超文本应用程序语言)似乎是相关的,但并不完全相同。 HATEOAS和HAL之间的关系和区别是什么?
1回复

使用ServiceStack实现HATEOAS的正确方法

我知道mythz对HATEOAS的看法一般 ,但是我要说我必须遵循我的REST服务中的HATEOAS原则,并在我的DTO中添加链接(“self”,“parent”和其他可能的关系)。 像“self”和“parent”这样的链接包含资源的路径,这些路径当然与我的路由相关。 我正在为Se
1回复

由于在REST中使用HATEOAS而产生的循环依赖

我正在使用域驱动设计和适配器模式(在聚合根中有接口和许多实现)来设计REST应用程序体系结构。 只要不将HATEOAS添加到难题中,一切都很好。 在HATEOAS中,我的值对象(在依赖关系层次结构的底部)需要依赖资源(在顶层)。 这弄乱了一切。 我是HATEOAS的新手,所以也许我错过了
2回复

REST / HATEOAS - HAL链接中的可用方法

我正在寻找使用HATEOAS定义REST API。 特别是,我发现非常有趣的是为给定资源指示现在可用的操作的概念。 一些HATEOAS规范包含了太多的开销以满足我的需求,因此我正在研究HAL规范 ,因为我发现它非常简洁实用: 但是,HAL中的链接仅包含相关资源的列表,但不包含对它
3回复

实现HATEOAS的rest API的权限

我正在尝试找出在单页面应用程序中处理权限的正确方法,该应用程序直接与几个实现HATEOAS的RESTful API对话。 举个例子: “作为我的应用程序的用户,我可以查看,启动和暂停作业,但不能阻止它们。” 基础rest API具有以下资源: / jobs / {id}接
1回复

使用HATEOAS的REST Level 3 - 如何实现自定义操作

我有一个带有Spring HATEOAS的RESTful API。 我试着坚持3级。现在我有一个可以在其上执行的资源和操作。 其中一个与Profile资源有关。 可以克隆配置文件。 现在我想知道如何正确地做到这一点。 克隆操作已创建新的配置文件。 我在考虑: api/pro