最近,我对熟悉REST感兴趣。我尝试在REST上阅读Wiki条目,但这没有帮助。如果有人可以用简单的英语讲解(这没有不必要的技术术语),我将不胜感激
- 什么是REST
- 它在Web架构生态系统中占据什么位置
- 它与协议耦合的紧密程度(或宽松程度)。
- REST的替代方案是什么?REST与它们相比如何?
我了解可能无法在一两个段落中回答这个问题,在这种情况下,相关链接将受到高度赞赏。
最近,我对熟悉REST感兴趣。我尝试在REST上阅读Wiki条目,但这没有帮助。如果有人可以用简单的英语讲解(这没有不必要的技术术语),我将不胜感激
我了解可能无法在一两个段落中回答这个问题,在这种情况下,相关链接将受到高度赞赏。
Answers:
什么是REST(简单的英语)
代表性的:代表某人讲话或代表某人的行为。
状态转移:转移状态。
什么是REST?
代表性国家转移。它描述了一个系统如何与另一个系统通信状态。一个示例是表示为XML,JSON或纯文本形式的产品状态(名称,说明等)。状态的广义概念称为资源。
它在Web架构生态系统中占据什么位置?
REST通常与Web服务接口相关联,因为HTTP是迄今为止最常见的运营商协议。在7层模型中,它存在于应用程序层。但是,请参阅下一节。
它与协议有多紧密(或宽松)耦合?
REST不是HTTP。之所以使用HTTP,是因为REST以其最通用的形式存在,可以帮助机器将动词的概念映射到任意名词集合上。HTTP包含一组有用的通用动词(GET,PUT,PATCH等),这些动词可以应用于使用HTTP以URI表示的任意名词,例如GET http://example.org/Product(54)。
REST的替代品是什么?REST与它们相比如何?
这类似于询问“我的方法有多休息?” 使用以下列表(摘自Martin Fowler所述的Richardson成熟度模型):
0级-POX沼泽
对所有内容使用POST(读取,写入,删除)。这是SOAP,POX,RPI等。您只是将HTTP用作自己协议的隧道。您将目标确定为可以根据请求正文的内容执行所有操作的单个端点。
级别1-资源
对所有内容使用POST。面向旨在提供有关特定事物的信息的多个端点。您刚刚发现了资源。
2级-HTTP动词
对资源使用HTTP动词。现在,您正在获取它。创建POST,覆盖PUT,可用操作的OPTIONS,删除以删除资源。由于使用了这些动词,不同的HTTP状态代码开始变得越来越相关(202接受任何人吗?)。
第3级-超媒体控制(HATEOAS)
在这一点上,您将做出最后的飞跃,并引入超媒体作为流控制机制。除了对超媒体有一般的了解之外,REST客户端不需要有关如何与任何特定应用程序或服务器进行交互的先验知识。可以通过Content-Type标头字段在HTTP中进行通信。文本格式包括AtomPub和(更简洁的)HAL,而HyperAudio可以很好地用于音频流(请参见SoundCloud等)
state transfer
没有代表。代表某人说话或采取行动的代表是在这种情况下的工作方式?
尽管REST是“代表性状态转移”的缩写,但考虑通过某种直观界面执行各种操作的想法可能会更容易。
例如,诸如http://www.mysite.com/FindProduct/125/之类的URL 可以解释为某人想要获得ID为125的产品信息。
尽管通常从HTTP的角度来考虑REST,但是可以将该概念应用于其他协议,如Wikipedia参考中所述。
REST可能有用的其他示例: