1

我目前正在借助 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、...)可能太新且太复杂,无法在没有可编程客户端的情况下进行测试。

4

1 回答 1

2

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

所以你应该使用这个基于第一个提到的,但它有一些额外的东西,比如:很好的错误处理和支持嵌套实体的操作(等等)

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

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

这就是为什么你有一个名为“fields”的键的操作,你可以在其中描述你愿意接受的字段。

享受超媒体 API!

于 2014-11-17T20:19:52.107 回答