RESTful Web 服务实际上做了哪些 HTTP 编程没有做的事情? RESTful WS的主要用途是什么

What does RESTful web service actually does that HTTP programming doesn't? What is the main use of RESTful WS

我知道 RESTful WS 是一个整体架构,它是一种在老式 JAX-RPC 上实现 Web 服务的新方法。

在RESTful中,我们使用@GET、@POST等来管理calls/develop资源。同样可以使用 HTTP 编程来实现(两者都是无状态的)。 但是 bringing/implementing RESTful 的其他核心主要用途或需求是什么?正如我们在其中所做的一切,都可以使用 HTTP 编程来完成(我们在其中使用相同的方法)?

HTTP 是一种传输协议。

RESTful是一组原则。

基本上,RESTful Web 服务是遵循以下原则的特定 HTTP 应用程序:

  • 客户端服务器
  • 无国籍
  • 可缓存
  • 分层

问题不是"REST versus HTTP-Programing"。 REST 是关于如何创建分布式 Web 应用程序的更高概念。 HTTP 是一种具体的技术。 REST 定义了一些被认为是良好实践的约束。

HTTP 只是一种非常适合实现 REST-Style 服务的技术:

  • 可寻址性 => 在 HTTP 中,每个资源都可以通过唯一标识符 (URI) 寻址
  • 多个表示 => 每个资源都可以有多个表示(JSON、XML)- HTTP-Request 例如可以 'ask' 用于正确的表示(通过 headers)
  • 公共接口 => 而不是创建应用程序特定接口(SOAP 中的方法名称)HTTP 已经提供了一个接口:GET、PUT、POST、DELETE ...)
  • 无状态 => HTTP-Request设计为无状态
  • 超媒体 => 应用程序状态(客户端)通过检查表示中包含的链接来驱动

问题是比较不同的东西。 HTTP 是一种协议,而 REST 是一种架构风格。这就像问房子能做什么而砖头不能做什么。这没有意义。 HTTP 可以是 REST 应用程序的构建块。

REST 与 HTTP 或任何特定协议无关。 REST 是关于将 Web 本身的成功设计决策应用到软件开发中。问题是术语。互联网上 99.9% 的所谓 REST 应用程序并不是真正的 RESTful,因为 REST 已成为指代任何非 SOAP 的 HTTP API 的流行词。一些 REST 拥护者放弃了争取正确使用该术语的斗争,现在将 REST 应用程序称为超媒体。

与 Web 一样,REST 旨在用于数十年规模的软件开发。 REST 使您可以更轻松地在不破坏客户端的情况下改进您的应用程序。想一想今天您如何仍然可以访问几十年前创建的网站,而且几乎所有内容仍然正常运行。如果您正在创建具有数年规模长期目标的软件,那么 REST 可能就足够了。如果这不是您真正需要的,那么正确使用 REST 并不重要。只需使用适合您的任何东西,在这一点上,我认为如果您将其称为 REST,我认为没有人会再关心了。