@acruzjr/express-routes-versioning 中文文档教程

发布于 3年前 浏览 19 项目主页 更新于 3年前

Express routes versioning

构建状态npm version

一个简单的 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

Build Statusnpm version

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

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文