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

从我读到的一些东西来看,所谓的REST服务实际上就是RESTful服务。那么两者之间的区别是什么呢?


当前回答

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

为了区分或比较这两者,您应该了解REST是什么。

REST(具象状态传输)基本上是一种具有以下原则的开发架构风格:

它应该是无状态的 它应该只使用URI访问来自服务器的所有资源 它没有内置加密 它没有会话 它使用一个且只有一个协议——HTTP 为了执行CRUD操作,它应该使用HTTP动词,如get、post、put和delete 它应该只以JSON或XML、atom、OData等形式返回结果(轻量级数据)。

基于REST的服务遵循上面的一些原则,但不是全部

RESTFUL服务意味着它遵循上述所有原则。

它类似于:

面向对象语言支持所有面向对象的概念,例如:c++, c#

基于对象的语言支持一些面向对象的特性,例如:JavaScript, VB


例子:

asp.net MVC 4是基于rest的,而Microsoft WEB API是基于rest的。

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

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

我们可以使用URI访问资源 它支持HTTP谓词从服务器访问资源 它可以以JSON、XML的形式返回结果,也就是HTTPResponse。

然而,同时在MVC中

我们可以使用会话 我们可以让它有状态 我们可以从控制器动作方法返回视频或图像,这基本上违反了REST原则

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

其他回答

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

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

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

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

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

为了区分或比较这两者,您应该了解REST是什么。

REST(具象状态传输)基本上是一种具有以下原则的开发架构风格:

它应该是无状态的 它应该只使用URI访问来自服务器的所有资源 它没有内置加密 它没有会话 它使用一个且只有一个协议——HTTP 为了执行CRUD操作,它应该使用HTTP动词,如get、post、put和delete 它应该只以JSON或XML、atom、OData等形式返回结果(轻量级数据)。

基于REST的服务遵循上面的一些原则,但不是全部

RESTFUL服务意味着它遵循上述所有原则。

它类似于:

面向对象语言支持所有面向对象的概念,例如:c++, c#

基于对象的语言支持一些面向对象的特性,例如:JavaScript, VB


例子:

asp.net MVC 4是基于rest的,而Microsoft WEB API是基于rest的。

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

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

我们可以使用URI访问资源 它支持HTTP谓词从服务器访问资源 它可以以JSON、XML的形式返回结果,也就是HTTPResponse。

然而,同时在MVC中

我们可以使用会话 我们可以让它有状态 我们可以从控制器动作方法返回视频或图像,这基本上违反了REST原则

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

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

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

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

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

理查德森和Ruby的《Restful Web Services》是最好的一本书。