REST系统和基于REST的系统之间的区别是什么?
从我读到的一些东西来看,所谓的REST服务实际上就是RESTful服务。那么两者之间的区别是什么呢?
REST系统和基于REST的系统之间的区别是什么?
从我读到的一些东西来看,所谓的REST服务实际上就是RESTful服务。那么两者之间的区别是什么呢?
当前回答
从面向对象编程思想的角度来看,REST类似于要实现的接口,RESTfull服务类似于REST“接口”的实际实现。
REST只是定义了一组规则,说明它是REST api, RESTfull服务遵循这些规则。
上面的答案已经列出了大部分规则,但我知道一个重要的要求,在我的经验中经常被忽视,因为一个真正的REST api必须是超链接驱动的,除了所有HTTP PUT, POST, GET, DELETE爵士。
其他回答
具象状态传输(Representational State Transfer, REST)是一种用于分布式超媒体系统(如万维网)的软件体系结构风格。2000年,罗伊·菲尔丁(Roy Fielding1[2])在他的博士论文中引入并定义了“具象状态转移”(Representational State Transfer)一词。Fielding是超文本传输协议(HTTP)规范1.0和1.1版本的主要作者之一。 遵循REST约束被称为“RESTful”。资料来源:维基百科
“REST”是一种体系结构范式。“RESTful”描述了使用该范例。
Web服务本质上是网站,其内容是由计算机程序而不是人消费的。REST是一套体系结构原则,它规定web服务应该最大限度地利用HTTP和其他web标准,以便程序获得人们已经可以从web中获得的所有好东西。REST经常与SOAP web服务和其他面向“远程过程调用”的web服务进行对比。
Stefan Tilkov在Parleys.com上关于REST的演讲非常棒,尤其是这个。
理查德森和Ruby的《Restful Web Services》是最好的一本书。
基于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 stands for representational state transfer. That means that state itself is not transferred but a mere representation of it is. The most common example is a pure HTML server based app (no javascript). The browser knows nothing about the application itself but through links and resources, the server is able transfer the state of the application to the browser. Where a button would normally change a state variable (e.g. page open) in a regular windows application, in the browser you have a link that represents such a state change.
这个想法就是使用超媒体。也许还能创造出新的超媒体类型。我们可以用javascript/AJAX扩展浏览器,并创建新的自定义超媒体类型。这样我们就有了一个真正的REST应用程序。
This is my short version of what REST stands for, the problem is that it is hard to implement. I personally say RESTful, when I want to make reference to the REST principles but I know I am not really implementing the whole concept of REST. We don't really say SOAPful, because you either use SOAP or not. I think most people don't do REST the way it was envisioned by it's creator Roy Fielding, we actually implement RESTful or RESTlike architectures. You can see his dissertation, and you will find the REST acronym but not the word RESTful.