2012-09-17 121 views
22

构建RESTful API的关键之一是HATEOAS。现在,Jersey提供了非常好的链接能力(请参阅this link)。但我已经看到了HAL Specification的草案,它似乎是一个深思熟虑的工作。在Jersey中使用HAL实现HATEOAS

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

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

+4

噢天啊,另一个人认为命名空间是坏事,似乎只是部分意识到这方面的工作。 (不要介意我,这不是你的错,只是压抑了那么多人 - 从来没有学过......叹息......) –

+0

没问题,也许你可以暗示我现有的工作?我对REST很陌生,试图找到解决方法。 – Sponiro

+0

@DonalFellows还有哪些其他的工作?你的意思是超媒体JSON的另一个标准吗?或者你应该只使用XML来处理Hateoas?在GitHUB,Facebook,Google等之间,每个RESTful API似乎都使用略微不同的格式来表示发现链接,因为没有JSON标准。使用HAL或某些标准,然后让像Halbuilder这样的库如何简化实现,会出现什么问题? –

回答

1

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

如果你真的新的休息,我认为你是在错误的道路可能开始。我不太清楚你的需求,但是如果你只想学习,从一个简单的REST服务开始,使用.net中的.net或类似的Java(一个简单的servlet就足够了),并尝试实现一个服务仅使用由http提供的工具(动词,请求标头和有效载荷,响应消息)。 MarcMassé的REST API设计规则可能是一个很好的学习参考。使用POJO或POCO创建您自己的通信协议,一旦您真正了解了REST以及它的工作原理,就可以使用框架来简化您的工作。

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

我希望它能帮助!

+0

我只能继续那个。它在许多层面上教了很多,没有陷入框架地狱。人们会学到的最重要的事情是如何从糟糕的框架中讲出一个好的框架。 –

0

坚持HAL所需的条件非常少。我建议你把你自己的小型图书馆放在你的POJO包裹在HAL对象中。通过这种方式,您可以按照您喜欢的方式获取代码,并且它将比HalBuilder更简单。

2

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

,取其中演示了一个转换器可以如何被用来cusomize JSON输出抛放源代码,看看BootstrapTypeConverterTest。对JSON进行单元测试转换应该是一项简单的任务,抛弃项目有很好的例子。

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

(如果JAXB参与,你也可以做到像processing custom annotations很酷的事情。)

你可能有你希望你的对象(输入)看起来像一个不错的主意,什么JSON代码(输出),因此为这些转换创建单元测试应该是一个相对简单的任务。

+1

'halbuilder-jaxrs'提供了一个很好的集成。不要忘记将'JaxRsHalBuilderSupport'注册为邮件正文作者。 –

+0

我将使用https://github.com/Nykredit/jackson-dataformat-h​​al,看起来轻巧灵活。 – sschrass

相关问题