Skip to content

Latest commit

 

History

History
32 lines (19 loc) · 3.16 KB

ch01_03.md

File metadata and controls

32 lines (19 loc) · 3.16 KB

数据传输历史

GraphQL 提出了一些非常新的想法,但所有这些想法都应该在数据传输的历史背景下理解。当我们考虑数据传输时,我们试图弄清楚如何在计算机之间来回传递数据。我们从远程系统请求一些数据并期待响应。

远程过程调用

在 1960 年代,发明了远程过程调用 (RPC)。RPC 由客户端发起,它向远程计算机发送请求消息以做某事。远程计算机向客户端发送了响应。这些计算机不同于我们今天使用的客户端和服务器,但信息流基本相同:从客户端请求一些数据,从服务器获得响应。

简单对象访问协议

在 20 世纪 90 年代后期,简单对象访问协议 (SOAP) 在 Microsoft 出现。SOAP 使用 XML 对消息进行编码,使用 HTTP 作为传输方式。SOAP 还使用了类型系统并引入了面向资源的数据调用概念。SOAP 提供了相当可预测的结果,但由于 SOAP 的实现相当复杂而令人感到沮丧。

REST

您今天最熟悉的 API 范例可能是 REST。REST 于 2000 年在 Roy Fielding 在加州大学欧文分校的博士论文中被定义。他描述了一种面向资源的架构,在该架构中,用户将通过执行 GET、PUT、POST 和 DELETE 等操作来浏览 Web 资源。资源网络可以被认为是一个虚拟状态机,动作(GET、PUT、POST、DELETE)是机器内的状态变化。我们今天可能认为这是理所当然的,但这在当时相当伟大。(Fielding 确实获得了博士学位。)

在 RESTful 架构中,路由代表信息。例如,从这些路由中的每一个请求信息将产生特定的响应:

/api/food/hot-dog
/api/sport/skiing
/api/city/Lisbon

REST 允许我们创建具有各种端点的数据模型,这是一种比以前的架构简单得多的方法。它提供了一种在日益复杂的网络上处理数据的新方法,但没有强制执行特定的数据响应格式。最初,REST 与 XML 一起使用。AJAX 最初是 Asynchronous JavaScript And XML 的缩写,因为来自 Ajax 请求的响应数据被格式化为 XML(现在是一个独立的词,拼写为“Ajax”)。这为 Web 开发人员带来了一个痛苦的步骤:在 JavaScript 中使用数据之前需要解析 XML 响应。

不久之后,Douglas Crockford 开发并标准化了 JavaScript Object Notation (JSON)。JSON 与语言无关,它提供了一种优雅的数据格式,许多不同的语言都可以解析和使用它。Crockford 继续编写开创性的 JavaScript:The Good Parts(O'Reilly,2008 年),在其中他让我们知道 JSON 是其中的一个好部分。

REST 的影响是不可否认的。它用于构建无数的 API。堆栈上下的开发人员都从中受益。甚至有一些信徒对争论什么是 RESTful 什么不是 RESTful 非常感兴趣,以至于他们被称为 RESTafarians。那么,如果是这样的话,拜伦、施罗克和谢弗为什么要踏上创造新事物的旅程呢? 我们可以在REST的一些缺点中找到答案。

👈 上一节 下一节 👉