REST&和REST之间的区别是什么? REST风格

时间:2009-10-14 20:36:51

标签: architecture rest

REST系统和RESTful系统之间有什么区别?

从我read的一些事情来看,大多数所谓的REST服务实际上都是REST服务。那两者之间有什么区别呢。

16 个答案:

答案 0 :(得分:435)

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

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

答案 1 :(得分:110)

“REST”是一种架构范式。 “RESTful”描述了使用这种范例。

答案 2 :(得分:108)

基于REST的服务/架构VC RESTFUL服务/架构

要区分或比较这些2,您应该知道什么是 REST

REST( RE 表示 S tate T 转移)基本上是具有一些原则的开发建筑风格......

  • 应该是无国籍的

  • 它应该只使用URI

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

  • 它没有会话

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

  • 对于执行CRUD操作,它应该使用HTTP动词,例如get,post,put和delete

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

REST based services遵循上述一些原则而非全部

RESTFUL services表示它符合上述所有原则。

它类似于以下概念:

Object-based languages支持所有OOP概念,示例:C ++,C#

Object oriented languages支持一些OOP功能,示例:JavaScript,VB


示例

ASP Dot NET MVC 4为REST-Based,而Microsoft WEB API为RESTFul

MVC仅支持上述REST原则中的一些,而WEB API支持上述所有REST原则。

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

  • 我们可以使用URI

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

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

但是,同时在MVC中

  • 我们可以使用会话

  • 我们可以使其成为有状态的

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

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

答案 3 :(得分:38)

正如杰森在评论中所说,RESTful仅用作形容词来描述尊重REST约束的东西。

答案 4 :(得分:27)

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

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

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

答案 5 :(得分:23)

REST是一种分布式软件的软件架构风格

符合REST约束被称为“RESTful”。

今天非常习惯于构建Web服务作为SOAP的替代方案。

这里有一些检查链接

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/

答案 6 :(得分:11)

感谢您的回答。 阅读Alex Rodriguez的this article,其中表明RESTful Web服务有4个基本特征:

  1. 明确使用HTTP方法。
  2. 无国籍。
  3. 公开类似目录结构的URI。
  4. 传输XML,JavaScript对象表示法(JSON)或两者。

答案 7 :(得分:10)

Representational State Transfer(REST)是一种用于分布式超媒体系统(如万维网)的软件架构。 “代表性国家转移”一词由Roy Fielding在1 [2]于2000年在他的博士论文中引入和定义。 Fielding是超文本传输​​协议(HTTP)规范版本1.0和1.1的主要作者之一。 符合REST约束称为“RESTful”。 Source:Wikipedia

答案 8 :(得分:7)

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

Stefan Tilkov在Parleys.com上关于REST的演讲非常好,especially this one

对于一本书,你不能比Richardson和Ruby的Restful Web Services更好。

答案 9 :(得分:4)

基于REST的服务称为" RESTful服务"。

来源我依靠张贴:Dr.Dobbs Archive

答案 10 :(得分:2)

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

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

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

答案 11 :(得分:1)

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

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

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

  • 第2级:也称为1级,符合标准HTTP方法/动词和多状态代码响应的使用

  • 第3级:又名第2级加上HATEOAS(响应中包含超媒体,描述了您可以进行的额外通话)

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

基本上所有RESTful apis都是REST api,但并非所有REST apis都是RESTful

definition of the Richardson Maturity Model

答案 12 :(得分:1)

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

答案 13 :(得分:0)

将REST视为体系结构的“类”,而RESTful是该类的众所周知的“实例”。

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

答案 14 :(得分:0)

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

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

答案 15 :(得分:-1)

“REST服务”和“RESTful服务”是同一个。

RESTful系统是遵循the original document that created the idea of RESTful networked applications中定义的REST约定的任何系统。

值得注意的是,RESTful的级别各不相同。总的来说,REST是一种风格,而不是标准,因此可以根据需要进行解释。一个示例是分层资源网址(例如/things/ID/relatedthings)与平面网址(例如/things/ID/relatedthings?thing=ID