2009-10-14 120 views
366

REST系统和RESTful系统有什么区别?REST和RESTful有何区别

从我几乎所有的read所谓的REST服务实际上是RESTful服务。那么两者有什么区别?

+3

问题的原因是因为如果您阅读链接中的文章并查看Fielding博士对大多数REST实现的看法,那么他们根本就不是REST系统。它们表现出REST式行为,但不能归类为REST系统。 – AwkwardCoder 2009-10-14 20:45:46

+4

我读过这篇文章,但我不认为这导致他在语义上无用的区别。 – JasonTrue 2009-10-14 20:50:22

+3

关于REST的维基百科文章 - http://en.wikipedia.org/wiki/Representational_State_Transfer - 第二段 - “符合REST约束通常被称为”RESTful“。” – Nate 2009-10-15 03:09:42

回答

354

Representational state transfer (REST)是一种软件体系结构。正如Roy Fielding的论文所述,REST是一种“架构风格”,它基本上利用了Web的现有技术和协议。

RESTful通常用于指代实现这种体系结构的Web服务。

+82

所以REST是架构和RESTful的一个形容词? – 2014-05-19 21:07:43

+6

@manei_cc - 基本上,是的。 – 2014-05-19 21:32:17

+3

@manei_cc:虽然在实践中您会发现名为RESTful的服务不遵循REST体系结构,并且基本上类似于REST类,REST类等。因此,请始终注意,“RESTful服务”不一定是使用REST架构,但Justin Ethier写道:_exploits Web_的现有技术和协议。 – Azder 2014-07-05 07:59:06

84

“休息”是一个建筑范例。 “RESTful”描述使用该范例。

+0

'建筑师'是什么?的网址?像'https:// translation.googleapis.com/language/translate/v2'这是REST风格吗? – UnKnown 2017-07-07 16:48:15

+2

REST体系结构需要很多特性。您不能仅仅通过展示URL来说明遵循REST原则的内容。 – SingleShot 2017-07-08 21:12:22

35

正如贾森在评论中所说,RESTful只是用作描述尊重REST约束的一个形容词。

9

具象状态传输(REST)是一种软件体系结构的分布式超媒体系统,如万维网的样式。代表性状态转移这一术语在他的博士论文中由Roy Fielding 1 [2]在2000年引入和定义。 Fielding是超文本传输​​协议(HTTP)规范版本1.0和1.1的主要作者之一。 符合REST约束条件被称为“RESTful”。 Source:Wikipedia

7

Web服务本质上是网站的内容被计算机程序使用,而不是人。 REST是一套体系结构原则,规定Web服务应该最大限度地利用HTTP和其他Web标准,以便程序获得人们已经可以从Web上获得的所有好东西。 REST常常与SOAP Web服务以及其他“远程过程调用”面向的Web服务形成对照。

Stefan Tilkov在Parleys.com的REST上的演示文稿相当不错,especially this one

对于一本书,你不可能比理查森和鲁比的Restful Web Services更好。

+0

下有正确的回答所以一个普通的网站可以被认为是一个REST应用程序? – 2016-04-29 23:14:58

+1

@yoyo_fun:是的,一个普通的网站也可以用RESTful构建。在某种抽象层次上,服务器是否将HTML返回给人类,或者JSON(比如说)是否是程序并不重要。 – 2016-09-24 23:46:13

10

感谢您的答案。

  1. 使用HTTP方法明确: 由亚历克斯·罗德里格斯,这表明一个RESTful Web服务有4个它们的基本特征阅读this article
  2. 无国籍。
  3. 公开与目录结构相似的URI。
  4. 传输XML,JavaScript对象表示法(JSON)或二者兼有。
+0

它实际上有6个约束。 – IronBlossom 2014-09-28 12:09:43

+1

@IronBlossom关心更新与缺少的两个答案? – 2016-09-30 15:15:34

25

REST代表代表性状态转移。这意味着国家本身并没有转移,而仅仅是它的代表。最常见的例子是基于纯HTML服务器的应用程序(无javascript)。浏览器对应用程序本身一无所知,但通过链接和资源,服务器能够将应用程序的状态传输到浏览器。如果按钮通常会在常规Windows应用程序中更改状态变量(例如页面打开),那么在浏览器中,您将有一个代表这种状态更改的链接。

这个想法是使用超媒体。也许可以创建新的超媒体类型。可能我们可以用javascript/AJAX扩展浏览器并创建新的自定义超媒体类型。我们将有一个真正的REST应用程序。

这是我REST代表的简短版本,问题是它很难实现。我个人说RESTful,当我想参考REST的原则时,但我知道我没有真正实现REST的整个概念。我们并不真正说SOAP,因为你使用SOAP或不使用SOAP。我认为大多数人不会像它创建者Roy Fielding所设想的那样进行REST,我们实际上实现了RESTful或REST架构。你可以看到他的dissertation,你会发现REST的缩写,但不是RESTful这个词。

42

基于REST的服务/建筑VC RESTful服务/建筑

为了区分或比较这些2,你应该知道什么是REST。 REST(代表性状态传输)基本上是有一些原则发展的建筑风格......

  • 应该是无状态的

  • 它应该只使用URI

  • 从服务器访问所有资源
  • 它没有内置加密

  • 它不具备会话

  • 它使用一个且只有一个协议,该协议是HTTP

  • 为执行CRUD操作,就应该使用HTTP动词如GET,POST,PUT和DELETE

  • 它应该只在形式返回结果JSON或XML,原子,的OData等(轻量级的数据)的

REST基于服务遵循一些上述原则,而不是所有的,而RESTFUL意味着它遵循所有上述原则。它与基于对象的语言(它支持所有的OOPS概念,例如C++,C#)和面向对象的语言(它支持一些OOP特性,如JavaScript,VB)的概念类似。示例是ASP Dot NET MVC 4是'基于REST'的,而Microsoft WEB API是'RESTFul'。 MVC仅支持上述REST原则中的一部分,而WEB API支持上述所有REST原则。

MVC只支持从REST API

  • 我们可以访问该资源使用URI

    以下
  • 它支持HTTP动词从服务器访问资源

  • 它可以以JSON,XML形式返回结果,即HTTPResponse。

但在WEB API的同时

  • 我们可以使用会话

  • 我们可以让它有状态

  • 我们可以从返回的视频或图像主要违反REST原则的控制器动作方法

这就是为什么MVC是基于REST的,而WEB API支持所有上述原则并且是RESTFul。

+3

我不明白为什么这已被低估,这个答案带来了很多澄清信息的问题。 – Marcovecchio 2016-02-25 13:44:26

+2

目前为止最好的解答 – Limon 2016-10-07 14:04:08

+1

这是最佳答案。 – 2016-11-08 16:09:41

0

有4个级别的理查德森成熟度模型中定义的API。这些定义为:

  • 级别0:任何系统的所有apis(SOAP或RPC属于此类别)都有一个端点。等级0 apis也可以类似于“命令”。

  • 等级1:一个ResourceUri描述的系统。这是一个定义了多个基于实体的URI的系统(而不是像0级系统那样只有一个端点)。这些URI可以使用不同的http操作(POST,GET,PUT等)来针对该资源实施不同的操作。

  • 级别2:又名级别1瓦特/柔顺使用标准HTTP方法/动词和多状态码的响应

  • 3级的:又名级别2加HATEOAS(包括在响应超媒体,其描述附加呼叫你可以)

虽然1级,2级和3级可视为REST系统,只有严格的等级(又名2级和3级)被认为是REST风格。

所以基本上所有的RESTful API中的REST API的,但不是所有的REST API是基于REST的

definition of the Richardson Maturity Model

0

REST描绘的软件架构,应用到客户端服务器通信。

RESTful实现REST架构和它们使用REST的客户端的网关。