2015-06-17 3 views
1

Я пытаюсь использовать Express 4 Router для использования другого маршрутизатора на основе пути. Я хочу, чтобы все маршруты /api/v2/ обрабатывались version2, а также каждый другой маршрут, обработанный version1. В приведенной ниже настройке я правильно нахожу все маршруты version1, но, кажется, игнорирует version2, так как каждый раз, когда я тестирую эти конечные точки, я получаю сообщение «Can not GET ...».Как правильно использовать Express 4 несколько маршрутизаторов

routes.js:

var version1 = require('./routes/vers1'); 
var version2 = require('./routes/vers2'); 

module.exports = function(app) { 

    app.all('/api/v2/*', version2); 

    app.all('/*', version1); 

}; 
+0

Я добавляю свои маршруты следующим образом: 'app.use ('/', version1); app.use ('/ api/v2', version2); 'я никогда не видел, чтобы это делалось так, как вы это делаете. –

ответ

2

Метод Пути (.get, .post , и, конечно, .all) являются терминальными. Вот почему вы можете использовать подстановочные знаки вместе с ними. .use не является терминальным и не допускает подстановочные знаки - он действует как префикс. Это выбор реализации экспресс. Используйте .use без подстановочных знаков.

Дело в том, что работы app.use("/*", version1) являются исключительно случайными. Это будет соответствовать любому маршруту и ​​пройдёт до version1[method](path). Так как нет префикса для полосы, если маршрут запроса соответствует path, экспресс рассмотрит это соответствие и служит этому маршруту.

Использование .use.

2

Вы хотите использовать .use не .all

.all для промежуточного программного обеспечения, как аутентификация

http://expressjs.com/api.html

Смежные вопросы