【问题标题】:What's the difference between REST & RESTfulREST 和 RESTful 有什么区别
【发布时间】:2010-12-06 19:57:41
【问题描述】:

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

从我read 的几件事来看,大多数所谓的 REST 服务实际上是 RESTful 服务。那么两者有什么区别。

【问题讨论】:

  • 这个问题的原因是,如果您阅读链接中的文章并查看 Fielding 博士对大多数 REST 实现的看法,它们根本就不是 REST 系统。它们表现出 RESTful 行为,但不能归类为 REST 系统。
  • 我读过这篇文章,但我不认为它导致他做出这种语义上无用的区别。
  • 关于 REST 的维基百科文章 - en.wikipedia.org/wiki/Representational_State_Transfer - 第二段 - “符合 REST 约束通常被称为‘RESTful’。”
  • @PramodNikumbh 在下面正确回答了这个问题。 “REST”系统是符合更广泛的 REST 定义的系统。它至少展示了一些休息原则。 “Restful”描述了一个更符合 REST 的系统。
  • 嗯,我觉得名字有点混淆,RESTful 中的“ful”会混淆无状态和有状态,这是两个不同的东西,我个人认为 REST 和 RESTful 必须是 STATELESS .想象一个名为 RESTles 的有状态 REST。 :)

标签: architecture rest


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    要区分或比较这两者,您应该知道 REST 是什么。

    REST(REpresentational State Ttransfer)基本上是一种具有一些原则的架构开发风格:

    • 应该是无状态的

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

    • 它没有内置加密

    • 它没有会话

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

    • 为了执行 CRUD 操作,它应该使用 HTTP 动词,例如 getpostputdelete

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

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

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

    类似于以下概念:

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

    Object-based 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

    【讨论】:

    • 我不明白为什么这被否决了,这个答案为这个问题带来了很多澄清信息。
    • 迄今为止最好的答案
    • 这是最好的答案。
    • 您可以将 FTP 与 REST 结合使用。请看:stackoverflow.com/questions/35534812/…
    • 上述“基于对象”和“面向对象”类别下的语言是相反的。面向对象的语言遵循所有 OOPS 原则,而基于对象的语言遵循一些原则。
    【解决方案3】:

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

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

    【讨论】:

    • 它实际上有 6 个约束。
    • @IronBlossom 想用缺少的两个更新答案吗?
    • 链接失效,新网址似乎是IBM - RESTful Web services
    【解决方案4】:

    REST 是一种用于创建 Web 服务的架构模式。 RESTful 服务就是实现该模式的服务。

    【讨论】:

      【解决方案5】:

      REST(REpresentation State Transfer) 是一种用于创建 WebServices 的架构。

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

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

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

          值得注意的是,有不同程度的 RESTful。总的来说,REST 是一种风格,而不是一种标准,所以根据需要有解释的余地​​。一个示例是分层资源 URL(例如 /things/ID/relatedthings)与平面 URL(例如 /things/ID/relatedthings?thing=ID

          【讨论】:

            【解决方案8】:

            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 api 都是 REST api,但并非所有 REST api 都是 RESTful

            definition of the Richardson Maturity Model

            【讨论】:

              【解决方案9】:

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

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

              【讨论】:

                【解决方案10】:

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

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

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

                【讨论】:

                • 这个答案被低估了。这个答案解释了 REST 的核心
                • 这就是我一直在寻找的答案。 RESTful 是类似 REST 的架构...
                【解决方案11】:

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

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

                对于一本书,没有比 Richardson 和 Ruby 的 Restful Web Services 更好的书了。

                【讨论】:

                • 那么一个普通的网站可以被认为是一个REST应用吗?
                • @yoyo_fun:是的,一个普通的网站也可以用 RESTfully 构建。在某种抽象层次上,服务器是否将 HTML 返回给人类或 JSON(比如)返回给程序是无关紧要的。
                【解决方案12】:

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

                【讨论】:

                  【解决方案13】:

                  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/

                  【讨论】:

                    【解决方案14】:

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

                    RESTful 通常用于指代实现这种架构的 Web 服务。

                    【讨论】:

                    • 那么 REST 是架构,而 RESTful 是形容词?
                    • @manei_cc:尽管在实践中您会发现名为 RESTful 的服务不遵循 REST 架构,并且基本上类似于 REST,喜欢 REST 等。所以请始终注意“RESTful服务”不一定使用 REST 架构构建,但正如 Justin Ethier 所写的那样:利用 Web 的现有技术和协议
                    • RESTful 应该用于真正尊重 REST 的 API。我看到太多只使用 GET 或 POST 的“REST”网络服务。 RESTful 强调 HTTP 动词和 URL 命名约定的完整使用。但这是我的观点。
                    • architect 是什么?网址?比如https://translation.googleapis.com/language/translate/v2这是REST风格?
                    • RESTful 从 Leonard Richardson 的 Level 2 成熟度模型和 Roy Fielding 的经典 REST 中汲取了简单明了的特性。 c-sharpcorner.com/article/…
                    【解决方案15】:

                    正如 Jason 在 cmets 中所说,RESTful 只是用作描述尊重 REST 约束的事物的形容词。

                    【讨论】:

                      【解决方案16】:

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

                      【讨论】:

                      • architect 是什么?网址?比如https://translation.googleapis.com/language/translate/v2这是REST风格?
                      • 一个 REST 架构需要许多特征。你不能仅仅通过显示一个 URL 就说符合 REST 原则。
                      猜你喜欢
                      • 2011-10-30
                      • 2012-10-13
                      • 2012-04-30
                      • 2012-04-21
                      • 2020-05-28
                      • 1970-01-01
                      • 2015-08-15
                      • 2014-01-13
                      • 1970-01-01
                      相关资源
                      最近更新 更多