1.REWSTful
翻译过来就是"表现层状态转化”。是Roy Thomas Fielding在他2000年的博士论文中提出的。有如下四个等级。
level0等级的REST有如下特点:
-
HTTP仅作为一个通信隧道(即HTTP只关注通信消息,而不关注客户端及服务器间的行为);
-
采用远程调用协议(Remote Procedure Call Protocol):即客户端想要执行某一任务,或者说向服务器请求某一服务,只需发送相关消息(执行某一句柄),而不用关心底层实现;
-
提供一个调用接口给客户端。
Level 1:Resources该层的特点有:
-
通过URI来定位资源,实现资源独立性;
-
采用“面向对象”的通信方式;
相比于Level 0,这层更加成熟的地方是客户端需要标明“我需要什么?”。
Level 2:HTTP Verbs
顾名思义,Level 2追加了HTTP动作来指明我们对于资源要做何种操作,如此,客户端的请求就能完整的表述为“我需要对XX(资源)做XX(行为)”,该层级是当前使用最为广泛地REST层级,通常定义如下四个HTTP动作:
-
GET—-》一般性获得资源,并不改变资源,所以这种操作相对安全
-
POST—》通常为创建资源操作
-
PUT—-》通常为更新资源操作
-
DELETE-》删除资源操作
同时,服务端不再通过错误消息(当然,某些系统也会封装错误消息,给予客户友善提示)来告诉客户端执行状态,而是通过返回HTTP状态字来告知客户端请求执行结果。
Level 3:Hypermedia Controls
首先要知道HATEOAS (Hypertext As The Engine Of Application State):这种策略解决了我们如何从得到的资源中顺带知晓下一步应当如何进行。
2.HATEOAS
超媒体作为应用程序状态引擎(HATEOAS)是REST应用程序体系结构的一个组件,它将其与其他网络应用程序体系结构区分开来。使用HATEOAS,客户端与网络应用程序交互,其应用程序服务器通过超媒体动态提供信息。除了对超媒体的一般理解之外,REST客户端几乎不需要知道如何与应用程序或服务器交互。相比之下,CORBA中的客户端和服务器通过文档或接口描述语言(IDL)共享的固定接口进行交互。HATEOAS约束将客户端和服务器分离的方式使服务器功能能够独立发展。REST客户端通过简单的固定URL进入REST应用程序。客户端可能采取的所有未来操作都在服务器返回的资源表示中发现。用于这些表示的媒体类型以及它们可能包含的链接关系是标准化的。客户端通过从表示中的链接中进行选择或通过以其媒体类型提供的其他方式操纵表示来转换应用程序状态。通过这种方式,RESTful交互由超媒体驱动,而不是带外信息。