RESTful API 作为现代 Web 应用程序中最常用的 API 类型,其演进历程也经历了多个版本和变化。本文将深入探讨 RESTful API 的版本演进历程,并提供有关每个版本的详细信息和示例代码。
RESTful API v1
最早的 RESTful API 版本是 v1,也被称为原始 RESTful API。此版本具有简单而基本的资源定义,以及对 HTTP 动词的基本协议支持。
特点
- 对资源的定义十分简单,例如
/users和/users/{id}可以表示用户集合和单个用户。 - 仅支持基本的 HTTP 动词:GET、POST、PUT、DELETE。
- 通信时使用 URL 中的路径参数。
- 采用基本认证。
示例代码
// www.javascriptcn.com code example
GET /users
// 返回所有用户
POST /users
{ "name": "Alice", "age": 25 }
// 创建一个名为 Alice,年龄为 25 的新用户,并返回其 ID
PUT /users/1
{ "name": "Bob", "age": 30 }
// 更新 ID 为 1 的用户信息
DELETE /users/1
// 删除 ID 为 1 的用户指导意义
RESTful API v1 是一个经典的 RESTful API 版本,它很好地遵守了 REST 的原则。虽然功能有限,但是其简单性使得它容易上手,适用于小型应用程序的开发。
RESTful API v2
随着RESTful API的逐渐普及,人们在 v1 上积累了足够的经验,也有了更多的创意和需求。于是,在 v1 的基础上,演进出了更多版本,其中 RESTful API v2 是一个值得深入探讨的版本。
特点
- 引入了形式化的 API 规范,例如 Swagger 和 RAML。
- 引入了响应式 API 接口。例如,客户端可以使用
/orders/{id}/stream路径,以流的形式获取订单的实时信息。 - 引入了版本管理。例如,可以使用
/v2/路径前缀,表示当前使用的 RESTful API 的版本。
示例代码
// www.javascriptcn.com code example
GET /v2/orders
// 返回所有订单
POST /v2/orders
{ "productId": "123456", "number": 2, "address": "Beijing" }
// 创建一个新订单
GET /v2/orders/1
// 获取 ID 为 1 的订单
PUT /v2/orders/1
{ "state": "paid" }
// 将 ID 为 1 的订单状态设置为“已支付”
GET /v2/orders/1/stream
// 获取 ID 为 1 的订单的实时信息 指导意义
RESTful API v2 引入了更多的规范和特性,使得它更适合中、大型应用程序,可以更好地支持反应式设计和版本控制等方面的需求。
RESTful API v3
RESTful API v3 是当前的主流版本,它在 v2 的基础上引入了更多的改进和特性。下面我们将详细讨论 RESTful API v3。
特点
- 引入了 Hypermedia。Hypermedia 是 RESTful API 中的一种风格,其核心是基于链接描述资源之间的关系。例如,在客户端请求
/order/1时,服务器可以返回一个包含order/1、order/1/products、order/1/payments等链接的实体。客户端可以根据此信息进行选择并遵循这些链接。 - 引入了 HATEOAS 参数,使得客户端可以在连接中指定下一步应采取的动作。
- 引入了其他特性,例如 Oauth2 认证、JSON Web Tokens (JWT) 等。
示例代码
// www.javascriptcn.com code example
GET /v3/orders
// 返回所有订单
POST /v3/orders
{ "productId": "123456", "number": 2, "address": "Beijing" }
// 创建一个新订单
GET /v3/orders/1
// 获取 ID 为 1 的订单
PUT /v3/orders/1
{ "state": "paid" }
// 将 ID 为 1 的订单状态设置为“已支付”
GET /v3/orders/1?HATEOAS={"next": "products"}
// 获取 ID 为 1 的订单信息,并设置下一步所采取的动作为“获取订单产品信息”指导意义
RESTful API v3 引入了更多的规范和特性,也是最常用的 RESTful API 版本。它是目前大多数 Web 应用程序所采用的版本,其优点是可以更轻松地构建可扩展、安全、可移植和易于维护的应用程序。
总之,RESTful API 的版本演进历程中有许多值得学习和掌握的知识点和技能。根据不同的需求和场景,我们可以选用不同版本的 RESTful API 进行开发和构建。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d625b0a941bf7134bcdbd3