@acruzjr/express-routes-versioning 中文文档教程
Express routes versioning
一个简单的 node.js 模块,为 express 提供路由版本控制。 您可以使用中间件向量更轻松地使用中间件。
Install
npm install @acruzjr/express-routes-versioning
Usage
遵循 semver 版本控制格式。 支持 '^, ~' 符号来匹配版本号。
var app = require("express")();
var { routesVersioning } = require("@acruzjr/express-routes-versioning");
app.get(
"/test",
routesVersioning([
{ version: "1.0.0", handler: respondV1 },
{ version: "2.2.9", handler: [respondV2] },
{ version: "2.5.0", handler: [anyMiddleware, respondV3] },
])
);
//curl -s -H 'accept-version: 1.0.0' localhost:3000/test
// version 1.0.0 or 1.0 or 1 !
function respondV1(req, res, next) {
res.status(200).send("ok v1");
}
//curl -s -H 'accept-version: ~2.2.0' localhost:3000/test
//curl -s -H 'accept-version: 2.2.9' localhost:3000/test
//Anything from 2.2.0 to 2.4.9
function respondV2(req, res, next) {
res.status(200).send("ok v2");
}
//curl -s -H 'accept-version: ^2.2.0' localhost:3000/test
//curl -s -H 'accept-version: 2.5.0' localhost:3000/test
//curl -s -H 'accept-version: 3.0.0' localhost:3000/test
function anyMiddleware(req, res, next) {
return next();
}
function respondV3(req, res, next) {
res.status(200).send("ok v3");
}
app.listen(3000);
API
routesVersioning(versions)
versions - 数组,包含 VersionHandler 列表。
VersionHandler {
version: string;
handler: RequestHandler[] | RequestHandler;
}
version - 字符串,semver 格式的版本作为键
handler - RequestHandler[] 或 RequestHandler - 回调函数(连接中间件格式)在请求与版本匹配时调用作为价值。
如何为每个请求确定版本?
默认行为是使用客户端的 accept-version
标头。
版本是如何匹配的?
semver versioning格式用于匹配版本,支持请求头上的^,~符号。
Examples
例子可以在这里
Test
npm test
Express routes versioning
A simple node.js module that provides routes versioning for express. You can use middleware easier using a middlewares vector.
Install
npm install @acruzjr/express-routes-versioning
Usage
Follows semver versioning format. Supports '^, ~' symbols for matching version numbers.
var app = require("express")();
var { routesVersioning } = require("@acruzjr/express-routes-versioning");
app.get(
"/test",
routesVersioning([
{ version: "1.0.0", handler: respondV1 },
{ version: "2.2.9", handler: [respondV2] },
{ version: "2.5.0", handler: [anyMiddleware, respondV3] },
])
);
//curl -s -H 'accept-version: 1.0.0' localhost:3000/test
// version 1.0.0 or 1.0 or 1 !
function respondV1(req, res, next) {
res.status(200).send("ok v1");
}
//curl -s -H 'accept-version: ~2.2.0' localhost:3000/test
//curl -s -H 'accept-version: 2.2.9' localhost:3000/test
//Anything from 2.2.0 to 2.4.9
function respondV2(req, res, next) {
res.status(200).send("ok v2");
}
//curl -s -H 'accept-version: ^2.2.0' localhost:3000/test
//curl -s -H 'accept-version: 2.5.0' localhost:3000/test
//curl -s -H 'accept-version: 3.0.0' localhost:3000/test
function anyMiddleware(req, res, next) {
return next();
}
function respondV3(req, res, next) {
res.status(200).send("ok v3");
}
app.listen(3000);
API
routesVersioning(versions)
versions - array, containing VersionHandler list.
VersionHandler {
version: string;
handler: RequestHandler[] | RequestHandler;
}
version - string, version in semver format as key
handler - RequestHandler[] or RequestHandler - function(s) callback (connect middleware format) to invoke when the request matches the version as value.
How version is determined for each request ?
Default behaviour is to use accept-version
headers from the client.
How versions are matched ?
semver versioning format is used to match version, supports ^,~ symbols on the request headers.
Examples
Examples are available here
Test
npm test