REST是什么(用简单的英语)[关闭]


84

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

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

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



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

我想知道这个问题是否可以回答?
加里·罗

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

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

Answers:


10

什么是REST(简单的英语)

普通英语:

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


技术:

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

REST与SOAP


43

什么是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等)


您说“ REST不是HTTP”,但是Roy Fielding似乎很固执地认为超文本是必需的,在整个HATEOAS处理中,如果没有它,据他说,您不是在进行“适当的” REST。当超文本!= HTTP时,我想知道在HTTP之外您实际上可以做些什么……
Andres F.

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

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

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

state transfer没有代表。代表某人说话或采取行动的代表是在这种情况下的工作方式?
2015年

11

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

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

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

REST可能有用的其他示例:


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

第一个链接不起作用。尽管如此,您的回答还是有帮助的!
发烧友
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.