在Jersey中使用HAL实现HATEOAS

时间:2012-09-17 13:27:57

标签: rest jersey hateoas

构建RESTful API的关键之一是HATEOAS。现在,泽西岛提供的连接能力相当不错(见this link)。但我已经看到了HAL Specification的草稿,它似乎是一个经过深思熟虑的工作。

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

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

3 个答案:

答案 0 :(得分:2)

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

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

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

(如果涉及到JAXB,你也可以做一些很酷的事情,比如processing custom annotations。)

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

答案 1 :(得分:1)

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

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

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

我希望它有所帮助!

答案 2 :(得分:0)

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