REST应该是超文本驱动的意味着什么?

时间:2014-10-16 00:22:16

标签: rest

我是RESTful API的新手,我读到REST API“必须是超文本驱动的”。我搜索了很多,但没有找到这个概念的具体解释。所以:

实际上,REST API应该是“超文本驱动”是什么意思?

2 个答案:

答案 0 :(得分:11)

When I say hypertext, I mean the simultaneous presentation of information and controls such that the information becomes the affordance through which the user (or automaton) obtains choices and selects action. Roy T. Fielding - http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

这是REST架构的基本约束之一 - 超媒体作为应用程序状态引擎(缩写为HATEOAS)。这意味着在任何给定时刻,基于当前资源表示的超媒体的客户端必须拥有他需要的所有信息来决定下一个传输的位置(更改其应用程序状态)。超文本中的超媒体控件将资源相互连接,并以机器可读的方式描述其功能。 REST客户端只需知道一件事就是与REST服务器通信 - 了解超媒体。相反,在面向服务的体系结构(SOA)中,客户端和服务器通过文档或接口描述语言(IDL)共享的固定接口进行交互。

HATEOAS将客户端和服务器分离,以便可以单独开发它们。

例如,

如果您初次拨打休息服务以使用某些网址/客户/添加客户,那么您将收到回复(考虑客户已成功添加),

HTTP/1.1 201 Created
Location: http://www.myREST/customers/<uuid>/

现在,调用添加客户的客户知道如何从作为响应标题返回的链接中找到相应的客户。

您可能会问客户如何知道他可以向/ customer /发布POST。通过不同的方式 - 超媒体控制,DSL特定格式和配置文件。

答案 1 :(得分:-1)

REST意味着api正确使用HTTP动词,状态代码等.HTTP协议,有动词,如:GET,POST,PUT,OPTIONS和DELETE。在rest api中,每个动词都映射到资源上的特定动作。例如: POST总是创建一个新的资源实例; GET是获取资源(或列表),DELETE是allways删除资源关联; PUT是修改/更新存在的资源..... 另外,您应该使用状态代码来指示响应:201创建,200修改,等等。

您可以在http://restinpractice.com/book/(吉姆韦伯书)

上获取更多信息