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

Ale*_*lla 10 rest

我是RESTful API的新手,在任何地方我都读到REST API"必须是超文本驱动的".我搜索了很多,但没有找到这个概念的具体解释.所以:

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

nik*_*ita 14

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将客户端和服务器分离,以便可以单独开发它们.

例如,

如果您初次调用休息服务以使用某些URL/customers /添加客户,那么您将得到回复(考虑客户已成功添加),

HTTP/1.1 201 Created
Location: http://www.myREST/customers/<uuid>/
Run Code Online (Sandbox Code Playgroud)

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

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