Voltar ao blog

Gerenciando requisições HTTP e tratamento de erros com interceptores do Angular

Gerenciando requisições HTTP e tratamento de erros com interceptores do Angular

Se você tem desenvolvido uma aplicação usando AngularJS, você provavelmente conhece os interceptadores HTTP. No entanto, esses interceptadores HTTP não estavam disponíveis no Angular até a versão 4.3. Neste tutorial, usaremos interceptadores no Angular para lidar com requisições e respostas HTTP, e processar erros.

Pré-requisitos

Angular as aplicações usam o Node.js runtime. Para concluir este tutorial, você precisará ter o Node.js instalado em sua máquina. Felizmente, o Node.js é bastante fácil de instalar. Temos um guia completo sobre Como Instalar o Node.js no Ubuntu 18.04 aqui.

Além disso, será benéfico para você conhecer o Angular e estar familiarizado com o uso do Angular CLI para construir aplicações Angular. Usaremos o Node v8.12.0 e o npm v6.4.1.

Passo 1: Criar App Angular

Para começar, vamos criar um novo app Angular usando o Angular CLI. Nomearemos nossa aplicação Angular-Interceptor. Execute o comando abaixo para criar o app:

Você será questionado sobre algumas escolhas. Insira os valores padrão e prossiga:

ang cli Angular Interceptors

Em seguida, navegue até o diretório da aplicação e execute o comando abaixo para iniciar a aplicação:

ng serve Angular Interceptors

Em seguida, acesse http://localhost:4200 no seu navegador para ver o app. Você agora configurou um app Angular básico.

Passo 2: Estilizar o App Angular

Aqui vamos estilizar nosso app Angular usando o Angular Material. Para instalar o Angular Material no seu projeto, execute o comando abaixo:

Isso instalará o @angular/material, @angular/cdk, e o @angular/animation no seu projeto. Em seguida, vamos configurar uma animação no projeto. Adicione o BrowserAnimationsModule no seu arquivo src/app/module.ts :

Usaremos o componente Dialog do Angular Material. Para usar o componente Dialog, temos que importar o MatDialogModule no arquivo src/app/app.module.ts :

Para tornar a interface do usuário mais atraente, vamos adicionar o indigo-pink.css ao seu arquivo styles.scss :

Passo 3: Construir Seu Interceptador Angular

Sob a pasta app, criaremos uma nova pasta chamada interceptor. Dentro desta pasta recém-criada, crie um novo arquivo httpconfig.interceptor.ts .

Precisamos importar algumas dependências em nosso arquivo httpconfig.interceptor.ts para fazer nosso interceptador funcionar. Essas dependências são HttpInterceptor, HttpRequest, HttpResponse, e HttpHandler, HttpEvent, HttpErrorResponse.

Nosso arquivo httpconfig.interceptor.ts ficará como abaixo após a importação:

Em seguida, crie uma classe HttpConfigInterceptor e implemente a interface HttpInterceptor. Este é um exemplo:

Adicione o código abaixo ao httpconfig.interceptor.ts arquivo:

Para fazê-lo funcionar, precisamos importar httpconfig.interceptor.ts em nosso app.module.ts arquivo:

Adicione HttpConfigInterceptor a providers. Definiremos multi: true para lidar com múltiplos interceptores:

Na próxima seção, criaremos nosso serviço para lidar com erros.

Passo 4: Serviço para Tratamento de Erros

Aqui escreveremos o código para lidar com erros. Precisaremos capturar os erros e exibi-los adequadamente para os usuários finais. Em resumo, abaixo estão as etapas que seguiremos:

  1. Crie uma pasta chamada error-dialog na pasta app .
  2. Crie um serviço para erros chamado errorDialogService em um arquivo chamado errordialog.service.ts.
  3. Adicione o código abaixo no errordialog.service.ts :
Depois disso, crie um novo arquivo chamado errordialog.component.ts. Dentro deste arquivo, adicione o código abaixo:
Finalmente, precisamos criar um arquivo HTML, errordialog.component.html, para o template:
Precisamos revisitar o arquivo httpconfig.interceptor.ts para algumas alterações. Essas alterações nos permitirão interceptar erros.

Para resumir, vamos listar as etapas abaixo:

  1. Comece importando o errordialog.service.
  2. Em seguida, adicionaremos o construtor para errorDialogService.
  3. Também adicionaremos o código para lidar com a resposta de erro usando catchError e throwError.
  4. Importe o errordialog.service e o errordialog.component no AppModule.

Depois de fazermos as alterações, dois arquivos serão modificados: app.module.ts e httpconfig.interceptor.ts:

Passo 5: Criando Serviços de Exemplo

Neste passo, criaremos dois serviços como exemplo:

  1. API de Login
  2. API de Detalhes do Cliente

Crie uma nova pasta chamada services na src pasta. Em seguida, dentro desta pasta recém-criada, crie um novo arquivo chamado login.service.ts, e adicione duas funções:

Passo 6: Chamando o Serviço de Cliente HTTP

Finalmente, estamos na última parte do nosso tutorial. Devemos chamar nosso serviço HTTP a partir do arquivo app.component.ts . Adicione as duas funções do LoginService ao arquivo app.component.ts. Chame a API de login no onload e a customers/details com onclick:

Agora temos que adicionar um elemento de UI em app.component.html, para que o usuário possa clicar nele:

Para finalizar, você precisará incluir o LoginService em providers no AppModule:

Abaixo, veja uma captura de tela da caixa de diálogo do manipulador de erros:

error

Conclusão

Neste tutorial, aprendemos como lidar com requisições e respostas HTTP usando interceptores do Angular. Também aprendemos como lidar com erros usando caixas de diálogo no Angular Material.

Os aplicativos Angular usam o Node.js como seu ambiente de execução. Se você quiser aprender mais sobre o Node.js e como implantar aplicações Node.js no Docker, confira o nosso Como implantar um aplicativo Node.js (Express.js) com Docker no Ubuntu 20.04 guia. Você também pode conferir Como executar tarefas de produção no Ubuntu 20.04 com Node.js e Instalando o Node.js no CentOS 8: um guia completo.

Feliz computação!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.