it-swarm.cn

什么是REST(简而言之)

最近,我对熟悉REST感兴趣。我尝试阅读 REST上的Wiki条目 ,但这没有帮助。如果有人能用简单的英语解释(不用不必要的技术术语),我将不胜感激

  1. 什么是REST
  2. 它在Web架构生态系统中占据什么位置
  3. 它与协议耦合的紧密程度(或宽松程度)。
  4. REST的替代方案是什么?REST与它们进行比较。

我了解可能无法在一两个段落中回答这个问题,在这种情况下,相关链接将受到高度赞赏。

85
Gaurav

什么是REST(简而言之)

普通英语:

代表性的:说话或代表某人的行为。
状态转移:转移状态。


技术:

  • 我们不传递实际的对象,而是以某种形式(例如,代表数据库表的xml/json/text)表示形式。
  • REST,用于通过Internet公开公共API来处理数据的CRUD操作。 REST专注于通过单个一致的接口访问命名资源。
  • REST是通过某种媒体类型表示。媒体类型的一些示例包括XML,JSON和RDF。
  • REST是 面向资源的体系结构(ROA) 的体系结构样式,而不是规范或标准。
  • 建筑风格意味着它是一种概念,理论(以及如何实现它,这取决于您)
  • 一切都由唯一端点标识。即,每个资源(数据)都有一个端点。
  • 端点由带有资源地址的域名组成。

REST与SOAP

10
Premraj

什么是REST?

代表性国家转移。它描述了一个系统如何与另一个系统进行状态通信。一个示例是表示为XML,JSON或纯文本的产品状态(名称,说明等)。状态的广义概念称为资源。

它在网络架构生态系统中占据什么位置?

REST通常与Web服务接口相关联,因为HTTP是迄今为止最常见的运营商协议。在7层模型中,它位于 应用程序层 。但是,请参阅下一节。

它与协议有多紧密(或宽松)耦合?

REST不是HTTP。它之所以使用HTTP,是因为它以最通用的形式REST可以帮助机器将动词的概念映射到任意名词集合。HTTP包含一组有用的通用动词(GET,PUT ,PATCH等),可以使用HTTP将其应用于表示为URI的任意名词,例如GET http://example.org/Product(54 )。

REST的替代方案是什么?REST与它们进行比较

这类似于询问“我的方法有多休息?”使用以下列表(摘自 Richardson成熟度模型,如Martin Fowler所述 ):

级-POX沼泽

对所有内容(读,写,删除)使用POST。这是SOAP,POX,RPI等。您只是将HTTP用作自己协议的隧道。您可以将单个端点作为目标根据请求正文的内容执行所有操作。

第1级-资源

对所有内容使用POST。面向旨在提供有关特定事物的信息的多个端点。您刚刚发现了资源。

第2级-HTTP动词

对资源使用HTTP动词。现在,您正在获取它。 POST将被创建,PUT将被覆盖,可用操作的选项,DELETE以删除资源。由于使用了这些动词,不同的 HTTP状态代码 开始变得越来越重要(202接受任何人吗?)。

等级3-超媒体控制( [〜#〜] hateoas [〜#〜]

在这一点上,您将做出最后的飞跃,并引入超媒体作为流控制机制。除了对超媒体的一般理解之外,REST客户端不需要任何有关如何与任何特定应用程序或服务器进行交互的知识。该信息可以通过Content-Type标头字段以HTTP形式进行通信。 AtomPub 和(更简洁) [〜#〜] hal [〜#〜] ,而 HyperAudio 适用于音频流(请参见SoundCloud等al)

44
Gary Rowe

虽然REST是Representational State Transfer的缩写,但考虑通过一些直观的界面执行各种操作的想法可能更容易。

例如,诸如 http://www.mysite.com/FindProduct/125/ 之类的URL可以解释为某人想要获取ID为125的产品信息。

虽然REST通常是用HTTP来考虑的,但是可以将该概念应用于其他协议,如Wikipedia参考中所述。

REST的其他示例可能会有用:

11
JB King