随着产品的迭代和发展,API 的版本控制变得越来越重要。当我们需要对 API 进行改动时,为了保证收到影响的最小化,其它系统需要在适合的时候升级到新的版本。不使用版本控制会导致系统版本的混乱和 API 调用的不兼容。
在这篇文章中,我将会向你介绍如何使用 Hapi 进行 API 版本控制。Hapi 是一个 Node.js 框架,专注于构建应用程序的 API。Hapi 框架易于扩展和使用,可以用来构建可靠、可维护和可扩展的 API。
API 版本控制的常用方法
在开始介绍 Hapi 框架的 API 版本控制方法之前,先来学习一下常见的 API 版本控制方法。在实践中,以下三种方法被使用得比较频繁:
- 在 URL 中使用版本号。例如:
/v1/users
表示 API v1 版本中的用户信息。 - 在 HTTP Header 中使用版本号。例如:
Accept-Version: v1
表示使用的是 API v1 版本。 - 在 URL 查询中使用版本号。例如:
/users?version=v1
表示使用的是 API v1 版本中的用户信息。
使用 Hapi 进行 API 版本控制
在 Hapi 框架中,我们可以使用插件来实现 API 版本控制。Hapi 提供了一个官方插件 hapi-version,可以轻松实现上述三种 API 版本控制方式中的任意一种。
安装插件
首先,在项目中使用 npm 安装 hapi-version:
npm install hapi-version --save
配置插件
接下来,我们需要在 Hapi 服务器中加入 hapi-version 插件。我们需要设置 API 的根目录和默认版本号:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - --- -------------- ------------------- ----- ---- --- ----------------- --------- ------------------------ -------- - -------------- --- --- --------------- -- ----------- ---------------- - -- -------------- -------- ------------------- ------- --------- - --- --------------------------- ------------------- ------- -- ----------------- ---
在此示例中,我们将版本控制设置为 “1” 和 “2”,默认版本为 “1”。我们使用了习惯上带有组织标识的“myawesomestuff”作为供应商名称。
添加路由
配置插件之后,我们需要在代码中显式编写路由。在以下示例中,我们将使用 URL 参数的方式来制定版本:
-- -------------------- ---- ------- -------------- ------- ------ ----- --------- ------- - -------- ----------------- ------ - ----- -------- - - ------ -- -- --------------------- ----- ----- ---- --- --------------------- ----- ----- ---- --- ---------------- -- ----- -------- ------------ ---- --- ------- ------ -------- --- ------ -- -------- --- --- -------------- ------- ------ ----- --------- ------- - -------- ----------------- ------ - ----- -------- - - ------ -- -- --------------------- ----- --- ---- --- ---------------- -- ----- -------- ------------ ---- --- ------- ------ -------- --- ------ -- -------- --- ---
在这两个示例路由中,我们分别加入了版本为1和版本为2的用户信息。给出路由的时候,我们需要显式地制定版本。
告诉客户端 API 的版本
为了在客户端中明确 API 版本,我们在 HTTP Header 中加入了版本信息,这可以在每次发送请求时加入。在 Hapi 中,这一步十分简单。我们可以使用 hapi-swagger 插件来自动生成文档,并在 Swagger UI 中进行 API 版本控制。在以下示例中,我们为我们的 API 加入了 Swagger UI。
-- -------------------- ---- ------- ----- ---- - ---------------- -- ----- ----- ---- - ---------------- -- ------------ ----------------- ------ ------- - --------- ------------ -------- - ----- - ------ -------- --- --------------- -------- --------------- -- ----- ----------------- - --- ----- -- ---- ---------------- -- ------------------- ------- -- ----------------------
完成这些步骤后,在 API 请求中将包含版本信息:
GET /users HTTP/1.1 Host: localhost:3000 Accept-Version: 2
总结
使用 Hapi 进行 API 版本控制可以大大地帮助我们维护 API 的兼容性,避免了一些不必要的错误和麻烦。在这篇文章中,我们介绍了如何使用 hapi-version 实现内部路由的版本控制,以及如何使用 hapi-swagger 自动生成文档并提供可以用于版本控制的 Swagger UI。
以上是使用 Hapi 框架进行 API 版本控制的方法,感谢大家的阅读!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64795aba968c7c53b0561fcc