Os middlewares
A cadeia de processamento que protege e instrumenta cada requisição.
Os middlewares
Você adiciona um middleware de autenticação, ele funciona perfeitamente nas novas rotas, e uma rota antiga continua acessível sem token. Você adiciona CORS, e o navegador continua recusando a requisição. Você adiciona um limitador de taxa, e ele conta todas as requisições como se viessem do mesmo endereço IP. Esses três sintomas têm uma única causa: a ordem de declaração.
O Express não tem noção de prioridade, de escopo ou de ciclo de vida. Ele possui uma lista, percorrida de cima para baixo, e cada elemento decide se passa a vez para o próximo ou se encerra a requisição. Um middleware declarado depois de uma rota nunca será aplicado a essa rota. Um middleware que não chama nem next() nem um método de resposta deixa a requisição pendente para sempre, até o timeout do cliente, mantendo em memória os objetos req e res e tudo o que sua closure captura. É um vazamento de memória que não produz nenhuma mensagem de erro. Esta lição apresenta o modelo exato e, em seguida, a cadeia mínima a ser implementada em qualquer API séria.
A assinatura e o contrato
Um middleware é uma função com três argumentos, e um tratador de erros é uma função com quatro argumentos. O Express distingue os dois inspecionando fn.length: se você omitir o parâmetro err ou qualquer um dos outros, seu tratador de erros se torna um middleware comum e nunca será chamado em caso de erro.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão