REST 架构核心要素解析
1. 按需代码(Code-on-Demand)
按需代码是 REST 所施加的唯一可选约束。这意味着采用 REST 的架构师可以自主选择是否使用该约束,从而获得相应的优势或承担其劣势。借助这一约束,客户端能够下载并执行服务器提供的代码,例如 Java applets、JavaScript 脚本等。
对于 REST API 而言,此约束似乎并非必要,因为 API 客户端通常只需从端点获取信息,然后按需进行处理。然而,对于 REST 的其他应用场景,如 Web 服务器,客户端(即浏览器)可能会从该约束中受益。
所有这些约束为架构提供了一组虚拟边界,在这个范围内架构可以灵活运作,并依然能获得 REST 设计风格带来的益处。REST 本质上是一种用于表示状态转移的设计风格,也就是通过某种表示形式来转移事物的状态。而这些“事物”主要指的是资源,资源是状态转移的主体。
2. 资源(Resources)
资源是 REST 架构的核心构建块。任何可以被命名的事物都能成为资源,比如网页、图像、人物、天气服务报告等。资源决定了服务的内容、要传输的信息类型以及相关的操作。它是一切的核心实体。
资源是对任何可概念化事物的抽象,从图像文件到纯文本文档都可以是资源。资源的结构如下表所示:
| 属性 | 描述 |
| — | — |
| 表示形式(Representations) | 可以是任何表示数据的方式(二进制、JSON、XML 等)。单个资源可以有多种表示形式。 |
| 标识符(Identifier) | 一个在任何给定时间仅能检索一个特定资源的 URL。 |