Tipos de middleware 
   O middleware no desenvolvimento de software, especificamente em aplicativos da Web, atua como uma ponte entre a lógica principal do seu aplicativo e o mundo externo. É responsável por lidar com tarefas como: 
 * 
 Autenticação: Verificando as credenciais do usuário e concedendo acesso. 
 * 
 Autorização: Determinando quais recursos um usuário pode acessar. 
 * 
 log: Gravando eventos e solicitações de depuração e monitoramento. 
 * 
 Manuseio de erro: Pegando exceções e fornecendo respostas graciosas. 
 * 
 Solicitar validação: Garantir que os dados enviados pelo cliente sejam válidos. 
 * 
 Limitação da taxa: Prevendo solicitações excessivas de um único usuário ou endereço IP. 
 * Cache 
: Armazenar dados frequentemente acessados para melhorar o desempenho. 
 * 
 cors (compartilhamento de recursos cruzados de origem): Ativando solicitações de segurança de origem cruzada.  
 Aqui está um colapso de alguns tipos comuns de middleware:  
 1. Com base no propósito:   * 
 Middleware de autenticação: Verifica a identidade do usuário e concede acesso com base em credenciais. 
 * 
 Exemplo: Autenticação JWT (JSON Web Token), autenticação OAuth2. 
 * 
 Middleware de autorização: Determina os privilégios do usuário e permite o acesso a recursos específicos. 
 * 
 Exemplo: Controle de acesso baseado em função (RBAC), controle de acesso baseado em recursos (RBAC). 
 * 
 Middleware de log: Registra eventos e solicitações de depuração e monitoramento. 
 * 
 Exemplo: Winston, Pino, Morgan. 
 * 
 LIDADE DE ERRO Middleware: Pega exceções e lida com erros graciosamente. 
 * 
 Exemplo: Manipulador de erros interno do Express, manipuladores de erro personalizados. 
 * 
 Solicitar middleware de validação: Valida os dados enviados pelo cliente para garantir sua correção. 
 * 
 Exemplo: Joi, Validador Express. 
 * 
 Middleware limitante da taxa: Limita o número de solicitações que um usuário ou endereço IP pode ser feito dentro de um determinado prazo. 
 * 
 Exemplo: Limite de taxa expressa, limitadores de taxa baseados em Redis. 
 * 
 middleware de cache: Lojas frequentemente acessavam dados para recuperação mais rápida. 
 * 
 Exemplo: Redis, Memcached. 
 * 
 Middleware CORS: Permite solicitações de origem cruzada ao aplicar a segurança. 
 * 
 Exemplo: cors, expresso-cors. 
 * 
 Body Parsing Middleware: Paresas de solicitação de entrada em estruturas de dados utilizáveis. 
 * 
 Exemplo: Body-Parsser, Multer.   
 2. Com base na execução:   * 
 Middleware de pré-processamento: Executa antes que a solicitação atinja o manipulador de rota. 
 * 
 Exemplo: Autenticação, autorização, registro, validação de solicitação. 
 * 
 Middleware pós-processamento: Executa após o manipulador de rota ter processado a solicitação. 
 * 
 Exemplo: Manuseio de erros, cache, log (para respostas).   
 3. Com base na implementação:   * 
 middleware embutido: Middleware fornecido pela própria estrutura. 
 * 
 Exemplo: Middleware de manuseio de erros interno do Express, Body-Parser. 
 * 
 Middleware personalizado: Middleware desenvolvido pelo desenvolvedor para lidar com necessidades específicas. 
 * 
 Exemplo: Middleware para implementar uma estratégia de autenticação personalizada. 
 * 
 Middleware de terceiros: Middleware fornecido por bibliotecas externas. 
 * 
 Exemplo: Middleware de autenticação JWT, Middleware limitador de taxa.   
 Escolhendo o middleware certo:   O tipo de middleware que você precisa dependerá dos requisitos específicos do seu aplicativo. Considere suas necessidades de segurança, desempenho, log e manuseio de erros.   
 Exemplo:   Imagine que você está criando um aplicativo da web com autenticação do usuário. Você precisaria: 
 * 
 Middleware de autenticação: Para verificar as credenciais do usuário e gerar uma sessão ou token. 
 * 
 Middleware de autorização: Para determinar quais recursos um usuário pode acessar com base em sua função. 
 * 
 LIDADE DE ERRO Middleware: Para lidar com possíveis erros durante a autenticação ou autorização.  
 Ao usar estrategicamente o middleware, você pode melhorar a segurança, o desempenho e a manutenção do seu aplicativo da web.