Вернитесь к другому Экспресс-приложению, когда первое не соответствует маршруту


TL / DR: есть ли способ объединить два приложения с express и вернуться ко второму приложению, если первое не реализует маршрут?

В настоящее время у нас есть два экспресс-приложения, новое хорошо продуманное приложение и старое, устаревшее приложение. В дальнейшем наша команда будет медленно переносить все, что есть в старом приложении, в новое приложение.

Я ищу способ объединить эти два приложения, чтобы они оба могли быть вызваны. Я понял, что могу сделать что-то , как это, используя app.use, но это требует, чтобы приложения находились в разных поддоменах или использовали разные базовые пути. Моя цель-сохранить маршруты одинаковыми, поэтому человек, вызывающий API, не знает об изменениях, происходящих под капотом.

Например, было бы здорово, если бы я мог сделать что-то вроде этого:

const express = require('express');
let oldApp = express();
let newApp = express();

oldApp.get('/old', function (req, res) {
  res.send("OLD");
});

newApp.get('/new', function (req, res) {
  res.send("NEW");
});

express().use(oldApp, newAPp).listen(3000);

Тогда я мог бы вызвать localhost:3000/old или localhost:3000/new, и обе конечные точки работали бы.

1   2   2016-12-13 22:14:52

1 ответ:

Путь является необязательным для .use. Вы можете применить промежуточное программное обеспечение, и любые маршруты, обрабатываемые этим промежуточным программным обеспечением, будут использоваться в первую очередь.

express.use(oldApp).use(newApp)

Если бы вы сделали .use(oldApp, newApp), он попытался бы интерпретировать oldApp как путь.