万维网上的一切都使用 REST 吗?

Does everything on the World Wide Web use REST?

我决定开始学习 Web 开发,出于某种原因我决定从头开始,所以我花了一整天的时间阅读有关网络架构、不同模型、层 TCP/IP 和其他内容的信息。遇到了一种叫做 REST API 的东西。现在,通过阅读,我从根本上理解了 REST API 是什么。但是我似乎无法回答的一个问题是,从本质上讲,所有这些都是 Web 服务,RESTful,或者是否还有其他架构风格可以构建 Web 应用程序?

Does everything on the World Wide Web use REST?

有点。

REST 是一个 architectural style, the "coordinated set of architectural constraints" used in the development of the HTTP 1.1 standard in the 1990s. Notice that Roy Fielding, who describes RESTin the dissertation he published in 2000, is also the first author listed in RFC 2616 (and more recently, RFC 7230).

在他的论文 chapter six 中,菲尔丁观察到:

Like most real-world systems, not all components of the deployed Web architecture obey every constraint present in its architectural design.

客户端应用程序状态的跟踪是一个常见的例子;今天的网络并没有为我们提供一个通用的、通用的机制来跟踪我们客户的状态。因此,网页设计人员转而使用特定于用户的资源来跟踪服务器上的状态(参见 REST mismatches in URI) or by using cookies as a hidden mechanism for tracking history on the server (see REST mismatches in HTTP)。

换句话说,我们每天使用的网络并不是 REST 架构风格的完美体现。

此外,您有类似 SOAP or GraphQL 的想法,其中有关消息的重要语义信息 不是 以标准化形式表达,这意味着我们的通用组件无法评估消息的语义并采取智能操作。


are all, essentially, web services, RESTful

否 - 除非您将自己限制在不包括违反 REST 的实现的“Web 服务”定义中。

找到在架构上与远程过程调用而不是 REST 对齐的 Web 实现很常见。参见 Fielding 2008。特别提示:阅读评论,里面有很多有用的问答