什么是真正的 Restful 的 API

一个真正的 resful API 不仅仅是基于 HTTP 的远程过程调用,它是一种遵循 Rest 架构风格设计的 API。这种架构风格的本质,是提炼和总结了互联网规模架构的原则。

其核心思想是将整个系统看做一个分布式超媒体信息获取系统。这意味着信息分布在不同的服务器上,通过超媒体相互连接。这种架构中,分布式超媒体是其关键的集成策略,它促成了一种强大的客户端与服务器之间的交互模式。

什么是分布式超媒体,它为什么重要

分布式超媒体是一种机制,它允许服务器的响应不仅包含数据,还能通过链接来指导客户端下一步可以做什么。最常见的超媒体格式就是 HTML。一个网站不仅包含文本,还包含了指向其它资源(如 CSS、JavaScript 文件或其它页面)的链接(<a> 标签,<link> 标签)

这一点之所以重要,是因为它实现了渐进式服务消费(Progressive Service Consumption)

  • 定义:渐进式服务消费指的是,客户端可以根据服务器提供的超媒体链接,按需索取并选择消费哪些关联服务。服务器提供一个主要资源,并通过链接提供”增强服务”,由客户端决定使用哪些。它的一个应用渐进增强,也是开发前端应用的最佳思考方式。
  • 接耦:这种方式创造了一个松耦合的系统。服务器可以迭代其功能、增加新的链接,而不会破坏现有的客户端。客户端无需硬编码所有具体的端点,而是通过服务器返回的超媒体来动态的发现它们。

HATEOAS 是什么?它与 Restful API 有何关系?

HATEOAS 即”超媒体作为应用程序状态的控制引擎”。它是 REST 原则的集中体现,被认为是最高成熟度的 Restful API。

本质上,HATEOAS 意味着客户端与应用程序的交互完全由从服务器接收到的超媒体驱动。服务器的响应包含了所有客户端可能执行的下一步操作的链接。这使得客户端变得更加通用和具有适应性,因为它不需要预先知道所有具体的 URI 结构,只需要理解超媒体格式和链接关系 (rel) 的含义即可。

例如,一个用户资源的响应可能包含一个“subscriptions”链接,借此指导客户端如何获取该用户的订阅列表,而客户端无需预先知道 /users/{id}/subscriptions 这样的 URL 结构。