Boa noite, Guilherme! Como vai?
Vamos lá para as respostas das suas perguntas!
Primeiro: Em um teste, eu criei um outro middleware no código e deixei sem a função next(), o que resultou em a página ficar carregando e não ir a lugar nenhum. Portanto, pelo que eu entendi, o trabalho da função next() é, justamente, levar a requisição para o próximo passo (seja outro middleware ou seja o servidor). É isso?
Exatamente! Remover o next()
equivale a impedir a passagem pelo portal, utilizando a analogia que eu fiz no outro tópico que vc citou! Contudo, nesse caso, a requisição fica batendo de cara no portal fechado! Por isso a página fica carregando indefinidamente!
Segundo: Numa requisição GET (onde há retorno), na volta, a requisição passa pelos middlewares na ordem inversa, porém, executando somente o que há após o next(). Correto?
Isso aí!
Se sim, o que acontece quando eu tenho mais de duas funções next()? Em qual momento as próximas (a partir da segunda) seriam executadas?
Essa parte da pergunta eu não entendi muito bem o que vc quis dizer. Em todo caso, quando estiver voltando ao cliente já com a resposta pronta, a requisição só seguirá para o próximo middleware após efetuar tudo que estiver após o next()
de cada um dos middlewares por onde ela passar. Na volta não há necessidade do next()
ser invocado! O que faz sentido, pois a ideia desse cara é somente impedir a entrada da requisição através do corredor caso seja necessário! Uma vez que a requisição já entrou, foi processada e está voltando, não faz sentido impedir ela de retornar ao cliente! Caso fosse possível fazer esse tipo de coisa seria o mesmo que cometer um crime chamado de "cárcere privado da requisição" ou como se alguém conseguisse se trancar dentro da própria casa! hahahaha
Pegou a ideia? Qualquer coisa é só falar!
Grande abraço e bons estudos, meu aluno!