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


什么是REST
它在Web体系结构生态系统中所处的位置
它与协议的紧密程度(或松散程度)。
REST的替代品是什么?REST与它们相比如何?

我知道可能无法在其中回答一两段,在这种情况下,相关链接将受到高度赞赏。

评论

试试看-tomayko.com/writings/rest-to-my-wife

我发现这很有参考价值,但不够详尽:ibm.com/developerworks/webservices/library/ws-restful

我想知道是否可以回答这个问题?

@GaryRowe我已经标记了一个答案,猜想它由于某种原因被删除了。我不了解这个网站。

以下所有答案均未使用“幂等”一词。您应该查找一下:幂等性是任何RESTful架构的重要方面。

#1 楼


什么是REST(简单的英语)


普通英语:

代表性的:代表某人讲话或采取行动的行为。状态转移:传输状态。


技术:


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

REST vs SOAP

#2 楼

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与之相比如何?

这类似于问“如何RESTful是我的方法吗?”请使用以下列表(如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等)

评论


您说“ REST不是HTTP”,但是Roy Fielding似乎非常重视“超文本”这一要求,对于整个HATEOAS,如果没有它,您将无法进行“适当的” REST。当超文本!= HTTP时,我想知道在HTTP之外您实际上能做些什么...

– Andres F.
2012年4月23日在17:28



据此(roy.gbiv.com/untangled/2008/…),罗伊·菲尔丁(Roy Fielding)指出,只要超文本或其子集(超媒体)支持某种类型的链接,就可以在HTML外部表示它。

–加里·罗(Gary Rowe)
2012年4月23日19:47

HTTP与REST配合得很好,因为HTTP提供了标准的动词来处理以无状态协议表示REST中的名词的URI。理想。但是,在他的论文(ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)中,他指出“ REST并不将通信限制为特定协议,但是它确实限制了组件之间的接口,因此也限制了组件之间的接口。组件之间可能进行的交互和实现假设。”因此,如果没有客户端状态管理,则完整的FTP实现不太可能是RESTful的。

–加里·罗(Gary Rowe)
2012年4月23日在19:54

+1为Martin Fowler链接。像往常一样,马丁·福勒(Martin Fowler)撰写了一篇文章,以最清晰,简洁的方式描述了一个概念

–汤姆·卡特(Tom Carter)
2012年4月24日9:33

您涵盖了状态转移而不是代表。代表某人说话或采取行动的代表是在这种情况下它是如何工作的?

– Premraj
2015年7月2日在2:01



#3 楼

尽管REST是“代表性状态转移”的缩写,但考虑通过直观的界面执行各种操作的想法可能会更容易。

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

尽管通常以HTTP的形式来考虑REST,但是该概念也可以应用于其他方面。 Wikipedia参考中所述的协议。

其他可能有用的REST示例:


学习REST:教程
RESTful Web服务,例子


评论


感谢您链接到“学习REST:教程”!那是我阅读的第一篇教程,让我感到自己学到了一些具体的东西。我读过的所有其他内容(包括Wikipedia文章)仅以最抽象的方式描述REST,并用技术术语包围。

– Avian00
13年7月9日在9:08

第一个链接不起作用。但是您的回答还是有帮助的!

–StatguyUser
17年4月11日在8:35