Экспресс-версия маршрутизации с Semver

node.js express semantic-versioning

194 просмотра

1 ответ

Я использую экспресс-маршруты- версии для версии моих маршрутов.

app.post('/messages', authUser, routesVersioning({
    "1.0.5": function(req, res) {
        moduleMessages.addV105(req, res);
    }
}, function(req, res) {
    moduleMessages.add(req, res);
}));

Это работает нормально и требует addV105()версии 1.0.5 и add()любой другой версии. Но я хочу позвонить addV105()для каждой версии, которая> = 1.0.5 (1.0.5, 1.0.6, 1.1.0, 2.3 ...) и add()для каждой версии <1.0.5 (1.0.4, 1.0.3, 1.0.0 ..)

Какой будет синтаксис для достижения этого?

Автор: Chris Источник Размещён: 08.11.2019 11:19

Ответы (1)


2 плюса

Решение

express-routes-versioningне поддерживает много операций / диапазонов semver, только ^и ~, которые не полезны для вашего случая использования.

Альтернативное промежуточное программное обеспечение Express express-semver-routing- более гибкое с точки зрения соответствия (оно использует semver, так что вы, вероятно, можете использовать любой из его компараторов).

Вам нужно немного переписать настройки маршрута:

const version = require('express-semver-routing')();
...
app.post('/messages', authUser, version('>= 1.0.5'), function(req, res) {
  moduleMessages.addV105(req, res);
});

app.post('/messages', authUser, function(req, res) {
  moduleMessages.add(req, res);
});

(Я думаю, что вы можете переключиться version()и authUserна первом маршруте, в противном случае authUserбудет вызван дважды, когда версия не соответствует версии).

Или, используя принцип СУХОЙ, используйте отдельный маршрутизатор:

let router = express.Router();

router.use(authUser)
      .post('/', version('>= 1.0.5'), function(req, res) {
        moduleMessages.addV105(req, res);
      })
      .post('/', function(req, res) {
        moduleMessages.add(req, res);
      });

app.use('/messages', router);
Автор: robertklep Размещён: 20.08.2016 06:53
Вопросы из категории :
32x32