Я пытаюсь переписать URL в Express JS 4. Все, что я читаю, говорит о том, что я должен перезаписать свойство request.url в промежуточном программном обеспечении. Два существующих модуля узла, которые переписывают, используют этот метод. Однако, когда я пытаюсь это сделать:Как переписывать URL в Express JS 4
app.use('/foo', function(req, res){
var old_url = req.url;
req.url = '/bar';
console.log('foo: ' + old_url + ' -> ' + req.url);
});
app.get('/bar', function(req, res) {
console.log('bar: ' + req.url);
});
это просто не работает.
Одно примечание, которое может помочь: оказалось, что req.url
выше всегда /
независимо от фактического используемого URL. Не удалось ли Express 4 изменить URL-адрес и не обновлять свою документацию? Как выполнить переписывание URL в Express 4?
Спасибо за помощь. Казалось, что есть две проблемы: одна, что я не вызывал next() и два, что я не понимал, что 'use ('/ foo', ...)' вытащит '/ foo' of request.url. –
Вы также можете создать совершенно отдельный маршрутизатор и установить его. Например: 'controller.js':' var router = require ('express'). Маршрутизатор; router.get ('/ ur', handle) ;, router.post ('/ foo', handle); router.use ('/ bar', handle); ' Затем в' app.js': 'var ctrl = require ('./ controller'); app.use ('/ top-level-url', ctrl); ' – Zlatko