REST和RESTful有什么区别

Awk*_*der 504 architecture rest

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

从我读过的一些事情来看,所谓的REST服务实际上就是REST服务.那两者之间有什么区别呢.

Jus*_*ier 456

代表性状态转移(REST)是一种软件体系结构.正如Roy Fielding的论文所述,REST是一种"架构风格",它基本上利用了Web的现有技术和协议.

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

  • 那么REST是架构而RESTful是一个形容词? (134认同)
  • RESTful应该用于真正尊重REST的API.我看到太多只使用GET或POST的"REST"Web服务.RESTful强调完整使用HTTP谓词和URL命名约定.但这是我的观点. (6认同)
  • @manei_cc:虽然在实践中你会发现名为RESTful的服务不遵循REST架构,基本上类似于REST,REST-wannabies等.所以要始终注意"RESTful服务"不一定是使用REST构建的架构,但正如Justin Ethier所写:_exploits Web_的现有技术和协议. (4认同)
  • “建筑师”是什么?网址?就像“https://translation.googleapis.com/language/translate/v2”,这是 REST 风格? (2认同)

小智 147

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

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

REST(RE presentational S tate T ransfer)基本上是一种具有一些原则的开发建筑风格......

  • 它应该是无国籍的

  • 它应该只使用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微软WEB API的时候RESTFul.

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

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

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

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

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

但是,同时在MVC中

  • 我们可以使用会话

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

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

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

  • 我不明白为什么这个被低估了,这个答案给这个问题带来了很多澄清的信息. (9认同)
  • 上面“基于对象”和“面向对象”类别下的语言是相反的。面向对象的语言遵循所有OOPS原则,而基于对象的语言遵循某些原则。 (5认同)
  • 到目前为止最佳答案 (4认同)
  • 这是最好的答案。 (3认同)
  • 您可以将FTP与REST一起使用。请参阅:/sf/ask/2487436871/ (2认同)
  • 这是非常错误的。“基于 REST”的服务不是一回事:它们要么是 REST,要么不是。“RESTful”肯定不是指满足所有标准,这就是 REST。“RESTful”这个术语在原论文中没有使用,而且也不知道它是如何产生的;大多数情况下,它被用作满足 REST 标准的服务的形容词,但该定义充其量只是非正式的。我们不说“SOAPful”。另外,我不了解 C#,但 C++ 肯定不支持所有 OOP 概念。离得很远。事实上,OOP 概念的最初发明者已经 (2认同)

Sin*_*hot 113

"REST"是一种架构范式."RESTful"描述了使用该范例.

  • REST架构需要许多特性.仅仅通过显示URL,您无法说出符合REST原则的内容. (2认同)

Dar*_*ler 41

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


Art*_*dez 27

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

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

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

  • 这个答案被低估了。这个答案解释了 REST 的**核心**。 (2认同)

Cla*_*edi 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/


Kum*_*ait 11

谢谢你的回答.阅读Alex Rodriguez 撰写的这篇文章,它表明RESTful Web服务有4个基本特征:

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

  • @IronBlossom关心用缺少的两个更新答案? (2认同)

And*_*elo 9

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


Jim*_*ans 7

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

Stefan Tilkov在Parleys.com上关于REST的演讲非常好,特别是这个.

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


Dad*_*dyM 7

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

我依赖发布的来源:Dr.Dobbs Archive


And*_*man 5

在理查森成熟度模型中定义了 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 apis,但并非所有 REST apis 都是 RESTful

理查森成熟度模型的定义