Функция next () в
app.get('/', (req,...
используется для вызова следующего обратного вызова по тому же маршруту
...
function(req, res, next){
console.log("I am the second one");
});
После удаления / демо из следующего ('/ demo '), вы заметите «Я второй» в консоли. ПРИМЕЧАНИЕ: next () передает управление только следующему промежуточному ПО по тому же маршруту.
app.get('/', (req, res, next)=>{
// E.g. purpose of this middleware is to print request method
console.log('Request method:', req.method)
next() // this code passes the control to the next callback which is below
}, (req, res) => {
console.log('End of route')
res.send('OK')
}
Не задействует маршрут приложения. Чтобы go отправиться по другому маршруту, вам нужно отправить еще один HTTP-запрос. Надеюсь, это поможет!
ОБНОВЛЕНИЕ Вот сценарий, когда next ('route') что-то делает, этот работает только , если 2 маршрута имеют один и тот же URI и метод http .
const express = require('express')
const app = express();
function middleware1(req, res, next){
console.log('Middleware #1')
next('route') // ends current callback chain, moves to the next route
}
app.get('/', middleware1, (req, res, next)=>{
console.log('Second middleware') // this callback is not executed
res.send('OK')
})
app.get('/', (req, res)=>{
console.log('Test') // the callback in this route gets called
res.send('2nd get / OK')
})
app.listen(3000, () => {
console.log('Server @', 3000)
})
Я думаю, что такая реализация маршрута редко применяется на практике, потому что лично я чувствую, что следовать ей скучно (имея 2 маршрута с одинаковыми методами uri и http). Тем не менее, хорошо узнать что-то от Гэндальфа Белого и этого.