REST和amp的区别是什么?宁静的

REST系统和基于REST的系统之间的区别是什么?

从一些事情中,我发现最被称为REST服务实际上是RESTful服务。那么两者之间的区别是什么呢?

373299 次浏览

“REST”是一种体系结构范式。“RESTful”描述了使用该范例。

具象状态转移(REST)是一种软件体系结构风格。正如Roy Fielding在一篇论文中描述的那样,REST是一种“架构风格”,基本上利用了现有的Web技术和协议。

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

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

REST是一种用于分布式软件的软件体系结构

遵循REST约束被称为“RESTful”。

如今,它被广泛用于构建web服务,作为SOAP的替代方案。

这里有一些链接需要检查

< p > # EYZ0 < br > # EYZ0 < br > # EYZ0 < / p >
具象状态传输(Representational State Transfer, REST)是一种用于分布式超媒体系统(如万维网)的软件体系结构风格。2000年,罗伊·菲尔丁(Roy Fielding)在他的博士论文中引入并定义了“具象状态转移”(Representational State Transfer)一词。Fielding是超文本传输协议(HTTP)规范1.0和1.1版本的主要作者之一。 遵循REST约束被称为“RESTful”。# EYZ0 < / p >

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

Stefan Tilkov在Parleys.com上关于REST的演讲非常棒,尤其是这个

对于一本书来说,理查德森和鲁比的Restful Web服务是最好的。

“REST服务”和“REST式服务”是一回事。

RESTful系统是任何遵循这是创建基于rest的网络应用程序思想的原始文档中定义的REST约定的系统。

值得注意的是,RESTfulness有不同的等级。总的来说,REST是一种风格,而不是标准,因此有根据需要进行解释的空间。一个例子是分层资源url(例如/things/ID/relatedthings) vs扁平url(例如/things/ID/relatedthings?thing=ID)

谢谢你的回答。 阅读Alex Rodriguez的这篇文章,他认为rest式web服务有4个基本特征
  1. 显式地使用HTTP方法。
  2. 是无状态的。
  3. 公开类似目录结构的uri。
  4. 传输XML、JavaScript对象符号(JSON)或两者。

REST代表具象状态传输。这意味着状态本身并没有被转移,而只是它的一个表象而已。最常见的例子是基于纯HTML服务器的应用程序(没有javascript)。浏览器对应用程序本身一无所知,但是通过链接和资源,服务器能够将应用程序的状态传递给浏览器。在常规的windows应用程序中,一个按钮通常会改变一个状态变量(例如页面打开),而在浏览器中,你有一个表示这种状态变化的链接。

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

这是我对REST的简短解释,问题是它很难实现。当我想引用REST原则时,我个人会说RESTful,但我知道我并没有真正实现REST的整个概念。我们不会说SOAPful,因为你要么用SOAP要么不用。我认为大多数人并没有按照它的创造者Roy Fielding所设想的方式来使用REST,我们实际上实现了RESTful或类似REST的架构。您可以看到他的论文,您将找到REST的首字母缩写,而不是单词RESTful。

基于REST的服务/架构vs.基于REST的服务/架构

为了区分或比较这两个,您应该知道休息是什么。

REST (再保险presentational 年代tate # eyz2transferer)基本上是一种具有以下原则的开发架构风格:

  • 它应该是无状态的

  • 它应该只使用URI访问服务器上的所有资源

  • 没有内置加密

  • 没有会话

  • 它使用一个且只有一个协议——HTTP

  • 对于执行CRUD操作,它应该使用HTTP动词,如getpostputdelete

  • 它应该只以JSON或XML、atom、OData等形式返回结果(轻量级数据)

REST based services遵循上面的一些原则,而不是全部

RESTFUL services表示它遵循上述所有原则。

它类似于:

Object oriented languages支持所有面向对象的概念,例子: c++, c#

Object-based languages支持一些面向对象的特性,例子: JavaScript, VB


# EYZ0:

asp.net MVC 4是REST-Based,而微软的WEB API是RESTFul

MVC只支持上述REST原则中的一部分,而WEB API则支持上述所有REST原则。

MVC只支持REST API中的以下内容

  • 可以使用URI访问资源

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

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

然而,同时在MVC中

  • 可以使用会话

  • 我们可以让它有状态

  • 我们可以从控制器动作方法返回视频或图像,这基本上违反了REST原则

这就是为什么MVC是REST-Based,而WEB API支持上述所有原则,是RESTFul

基于REST的服务称为“REST式服务”。

来源我依赖张贴:Dr.Dobbs存档

在Richardson成熟度模型中定义了4个级别的API。这些被定义为:

  • 0级:对其所有api (SOAP或RPC属于这一类)具有单一端点的任何系统。0级api也可以类似于“命令”。

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

  • 第2级:又名第1级w/标准HTTP方法/动词和多状态码响应的兼容使用

  • 第3级:又名第2级+ HATEOAS(响应中包含超媒体,描述您可以拨打的其他电话)

虽然级别1、级别2和级别3可以被认为是REST系统,但只有更严格的级别(即级别2和级别3)才被认为是RESTful的。

所以本质上所有的RESTful api都是REST api,但并不是所有的REST api都是RESTful的

的理查德森成熟度模型的定义

把REST看作一个体系结构“类”,而RESTful是该类的众所周知的“实例”。

请注意“”;这里我们不是在处理“真正的”编程对象。

REST(表示状态传输)是一种用于创建WebServices的体系结构。

而且

RESTful是一种使用REST体系结构编写服务的方式。RESTful服务公开资源,以识别与客户机交互的目标。

REST是用于创建web服务的体系结构模式。RESTful服务就是实现该模式的服务。

从面向对象编程思想的角度来看,REST类似于要实现的接口,RESTfull服务类似于REST“接口”的实际实现。

REST只是定义了一组规则,说明它是REST api, RESTfull服务遵循这些规则。

上面的答案已经列出了大部分规则,但我知道一个重要的要求,在我的经验中经常被忽视,因为一个真正的REST api必须是超链接驱动的,除了所有HTTP PUT, POST, GET, DELETE爵士。