简介
在前端开发的过程中,经常需要在多个版本间切换,此时我们需要一个方便的工具能够帮助我们控制不同版本的发布或回滚。egg-qversion
是一个实现多版本控制的 eggjs
插件,可以方便地对多个版本的请求进行控制。
安装
首先,在 egg-init
初始化的项目中,执行以下命令安装 egg-qversion
:
npm install egg-qversion
接下来,在 config/plugin.js
中增加以下内容:
exports.qversion = { enable: true, package: 'egg-qversion', };
使用
在 config/config.default.js
中,增加以下配置:
-- -------------------- ---- ------- -- ------------------------ -------------- - ------- -- - ----- ------ - ------- - --- -- --- -- ------------ -- --------------- - - ------------ ------ ----- ------ -- ---- --------------- ----- -- ---- ---------- ---------- -- ------- -- -- --- ------ ------- --
版本列表
versionList
是一个数组,其中存放可以控制的版本信息,此处我们定义了三个版本 v1
、v2
和 v3
。
默认版本
defaultVersion
是默认的版本,如果用户在请求时没有指定版本号,则默认采用该版本。
版本控制参数名
paramName
是版本控制的参数名,对于请求来说,paramName
就是对应的参数,我们可在请求时通过该参数控制请求的版本。
在我们添加完以上配置项后,在控制器中及中间件中可以通过 ctx.version
的方式获取当前接口的版本号。
代码示例
-- -------------------- ---- ------- -- -------------------------------- -------------- - -------- ---- -- - ------ ----- -------- ----------------------------- ----- - ----- ------- - ----------------- -- ------------------------ -- ------------- ------------------------------- ---------- -------- ------------- ----------- - -------- ----- ------- -- -- -- ---------------------- ----- -------------- ------- ---------- - ----- ------- - ----- - --- - - ----- ----- ------- - ------------ -------- - ---------------------- - -
在上面的示例代码中,我们定义了一个中间件 versionControl
,它负责从 query
、header
或者 qversion
中获取版本信息,并将版本信息保存在 ctx.version
中,然后将该中间件应用到了 HomeController
中。接下来的 HomeController
控制器中,我们再次取出 ctx.version
的值,并用其作为响应内容返回给前端。
指定版本号
我们可以通过以下两种方式来指定版本号:
查询参数
通过查询参数的方式,在请求时指定版本号:
http://localhost:7001/?version=v2
Headers
通过请求头的方式,在请求时指定版本号:
GET / HTTP/1.1 Host: localhost:7001 X-Version: v3
总结
egg-qversion
插件可以非常方便地在 eggjs
框架中进行多版本控制,此外还支持版本号在请求中的多种方式,并且使用非常简单。掌握了这个插件,对于在日常前端开发中进行多版本控制会变得非常简单。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600561b581e8991b448df5b0