【问题标题】:REST: forms, links and hypermedia formatREST:表单、链接和超媒体格式
【发布时间】:2014-12-30 17:19:30
【问题描述】:

我目前正在借助 Richardson 的优秀书籍“RESTful Web Services”来学习 REST 实践。我想设计一个遵循 Richardson 成熟度模型的 REST API,尤其是称为 HATEOAS 的第 3 级,这似乎是最复杂的处理。

首先,我不太了解链接和表单之间的不同含义?(关于超媒体,我知道 HTML 解释..)。 仅仅是“链接用于 GET 方法”和“表单用于 GET/POST/PUT 方法”的问题吗?

EDIT1:我明白了:表单可以是应用程序表单,用于构造 URI 并使用 GET 方法,也可以是资源表单对于 PUT/POST 方法(或多或少是我问的)。如果我错了,请纠正我,客户端应该使用 OPTIONS 方法仔细使用链接,以了解如何使用它。

由于我想符合 HATEOAS,所以我需要选择一种超媒体格式……我知道它存在多种格式,例如 Siren、HAL、Collection+JSON、JSON-LD、Hydra 等。 . 但是,我不知道该用哪一个?

在 Richardson 的书中,他使用 xHTML,它有一个主要优点:使用浏览器测试您的 API。但是 xHTML 似乎很重。 我可能更喜欢更轻量级的东西,但最近的超媒体格式(Siren、HAL、...)可能太新且太复杂,无法在没有可编程客户端的情况下进行测试。

【问题讨论】:

标签: web-services rest hateoas hypermedia


【解决方案1】:

我绝对会建议您尝试一下您的 API 的警报器格式。正如他们在其中一个 cmets 中正确提到的那样,它有一个不错的浏览器……但那个浏览器的支持很差(你可以在他们的 github 存储库中看到它)。

所以你应该使用this one,它基于第一个提到的,但它有一些额外的功能,例如:良好的错误处理和支持嵌套实体的操作(以及其他)

关于链接和表单之间的区别......我的 5 美分是您将链接用于 GET 请求,这些请求不需要来自客户端的输入参数和用于 POST、PUT、PATCH、GET 操作的操作(以警报格式交谈)确实需要向服务器发送一些参数。

现在,您可以说:“但我可以拥有此链接 http://testsite.com/api/v1/users?param1=value1”并且仍然传递参数。您是对的,但是!您的客户现在可以通过这个或那个参数了。

这就是为什么您需要使用名为“字段”的键来描述您愿意接受的字段的操作。

享受超媒体 API!

【讨论】:

  • 我想知道 Siren 是否会达到稳定版本?因为另一方面,我看到 Hydra 正在被 W3C 推高……但似乎太新了?
  • 很抱歉再次发表评论。只需找到一个比较 CollectionsJSON/HAL/Siren 的有用链接:github.com/kevinswiber/siren/issues/15;就我而言,警笛似乎没问题!
猜你喜欢
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 2012-03-01
  • 2012-08-30
  • 2013-05-11
  • 2018-05-20
  • 2014-03-18
相关资源
最近更新 更多