23

构建 RESTful API 的关键点之一是 HATEOAS。现在,Jersey 提供了非常好的链接功能(请参阅此链接)。但我看过HAL 规范的草案,它似乎是一个经过深思熟虑的工作。

如果有一些库可以轻松地在泽西岛遵守 HAL,我很感兴趣。我已经看到了草案中提到的参考资料,例如https://github.com/HalBuilder。但我使用的是直接 POJO 编组,我不知道如何将它与 Halbuilder 混合。

那么,是否已经有一些将 HAL 纳入泽西岛的库?或者也许我可以使用某种过滤器来手动增强生成的 POJO?如果是的话,有人可以给我一个线索来完成这个任务吗?

4

3 回答 3

2

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

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

如果您使用 Jerseys "POJO Support"-method,请查看JacksonHowToCustomSerializers以获取有关如何创建自定义序列化程序的类似示例。

(如果涉及 JAXB,您还可以做一些很酷的事情,例如处理自定义注释。)

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

于 2014-07-11T06:56:32.673 回答
1

即使这不是真正的答案,我也没有足够的字符将其放在评论中:)

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

如果你从一个框架开始,你可能会错过这个概念的本质......

我希望它有帮助!

于 2014-02-20T09:15:01.017 回答
0

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

于 2014-05-06T21:09:11.777 回答