0%
Os middlewares

Os middlewares

A cadeia de processamento que protege e instrumenta cada requisição.

10-15 min

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

Link copiado!