REST:表单,链接和超媒体格式

时间:2014-11-03 22:40:42

标签: web-services rest hateoas hypermedia

我目前正在理查德森和#34; 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,...)可能太新,而且在没有可编程客户端的情况下很难测试。

1 个答案:

答案 0 :(得分:2)

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

所以你应该使用基于前面提到的this one,但它有一些额外的东西,比如:漂亮的错误处理&支持嵌套实体(以及其他)的操作

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

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

这就是为什么你有一个名为'fields'的键的行为,你描述了你愿意接受的字段。

享受超媒体API!