我什么时候应该使用AtomPub?


13

我一直在进行有关RESTful Web服务设计的研究,我已经达到了我认为是关键的决策点,因此我想将其提供给社区以获取一些建议。

为了遵循RESTful架构的原则,我想提供一个可发现的API,因此我将尽可能全面地支持各种HTTP动词。我的困难在于选择这些资源的表示形式。您会发现,我很容易想出自己的API,该API涵盖了如何显示搜索结果以及如何提供与其他资源的链接,但这对我的应用程序来说是唯一的。

我已经阅读了有关Atom发布协议(RFC 5023)的信息,以及OData如何促进其使用,但它似乎为(当前)一个相当简单的API增加了额外的抽象层次。

所以我的问题是,开发人员何时应该选择AtomPub作为表示形式的选择-如果有的话?如果不是,当前推荐的方法是什么?


Answers:


11

在对此进行了大量研究之后,这是我的发现:

似乎有3种主要格式和方法:AtomPub,OData和HAL。我在下面总结了每个方面的研究。

AtomPub

  • 优点:完善的标准
  • 专业版:使用XML和JSON
  • Pro:通过Apache Abdera具有出色的Java支持
  • 缺点:Abdera引入了很多依赖项
  • 缺点:在服务器端使用非常复杂
  • 缺点:难以构建完整的JavaScript客户端

数据

  • 专业版:在AtomPub上构建
  • 专业版:使用XML和JSON
  • Pro:通过odata4j项目具有良好的Java支持
  • 优点:提供良好的URI查询结构

  • 缺点:引入了完整的框架(基本上替代了Dropwizard)

  • 缺点:使用起来非常复杂,尤其是实体数据模型(EDM)
  • 缺点:难以找到良好的JavaScript客户端库,而无需依靠仅Windows工具进行EDM

哈尔

  • 优点:引入了轻量级且可扩展的方法
  • 专业版:使用XML和JSON
  • Pro:创建一个JAXB模型来实现它很简单(没有依赖关系)
  • 优点:提供良好的链接框架
  • 专业版:使用jQuery XML解析创建JavaScript客户端很简单
  • 缺点:未批准(尽管已接近IETF)

那么什么时候应该使用AtomPub?

如果您对额外的复杂性感到满意,并希望为客户使用标准库,请从上面选择AtomPub。如果您正在运行大型文档存储库,则可能是这种情况。

我在最近的博客文章中提供了更多详细信息(此问题超出了范围),可能会对其他人有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.