Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Esclarecendo o next() e o funcionamento de um middleware

Fala pessoal, tudo bem?

Eu fiz os exercícios, li a dúvida do Joaquim (explicação excelente do instrutor, inclusive) e realizei alguns testes na minha máquina, mas fiquei com duas pulgas atrás da orelha:

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?

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? 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?

Obrigado desde já!

2 respostas
solução!

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!

Puts, pior que na última era bem essa a minha dúvida ( e tuas explicações são incríveis hahahaha) Valeu professor!