Express.js 中如何对 API 进行版本控制

阅读时长 4 分钟读完

在进行 Web 应用程序的开发时,经常需要对 API 进行版本控制,以便于进行升级、优化、更改等操作,同时还能保证向后兼容性。在 Express.js 中,我们可以利用中间件的方式进行 API 版本的控制。

实现方法

1. 创建路由文件夹

首先,在项目的根目录下创建一个名为 routes 的文件夹,该文件夹用于存放不同的 API 版本路由。

2. 创建路由文件

routes 目录下分别创建 v1.jsv2.js 两个文件,用于存放 API v1 和 API v2 的路由。

-- -------------------- ---- -------
-- ------------
----- ------- - -------------------
----- ------ - -----------------

------------------- ----- ---- -- -
  ---------- ----- ------- ---- -- ---
---

-------------- - -------
-- -------------------- ---- -------
-- ------------
----- ------- - -------------------
----- ------ - -----------------

------------------- ----- ---- -- -
  ---------- ----- ------- ---- --- ------- ------ ---
---

-------------- - -------

以上代码分别定义了两个版本的 /user 路由,其中 API v1 只返回 nameage 信息,而 API v2 还多了 gender 信息。

3. 创建中间件

在项目根目录下创建名为 versionControl.js 的中间件文件,用于对 API 版本进行控制。

-- -------------------- ---- -------
-- -----------------
----- -- - -----------------------
----- -- - -----------------------

-------------- - --------- -- -
  ----- --- - -----------------
  -------------- ---- -- -- --- -- --
  -------------- ---- -- -- --- -- --

  -- -------- --- ----- -
    ------ ---
  - ---- -- -------- --- ----- -
    ------ ---
  -
  
  ------ ----
--

以上代码中,通过 require 引入 v1.jsv2.js,然后定义了一个中间件函数,将不同版本的路由挂载到 /v1/v2 上,根据客户端传入的版本号,返回相应的路由。

4. 使用中间件

app.js 中引入中间件并使用。

-- -------------------- ---- -------
-- ------
----- ------- - -------------------
----- -------------- - ----------------------------
----- --- - ----------

-- -----
------------------------------ -- -- --- --
-- ------------------------------ -- -- --- --

---------------- -- -- ------------------- ------- -- -------------------------

app.js 中使用中间件,传递当前需要使用的 API 版本号,这里以 API v1 为例。

5. 测试 API

启动服务后,在浏览器中输入 http://localhost:3000/v1/user,应该能够看到返回的数据为:

这里使用了 API v1 的路由。

6. 升级 API

如果要升级 API 版本,只需要在 v2.js 中增加/修改相应的路由,然后在中间件中增加相应的逻辑,无需修改原有 API 版本的路由。

总结

在 Express.js 中,使用中间件可以很方便地实现 API 版本控制的目的,使我们的 Web 应用程序更加稳定和具有扩展性。同时,这种设计也符合 RESTful API 的设计规范,是一种良好的实践。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65a5f2daadd4f0e0ffe89c56

纠错
反馈