A definição de um interceptor para requisições HTTP pode se mostrar útil para:
- identificação de time out de sessão no servidor;
- realizar o controle de requisições ao servidor para que seja disposta a tela de carregamento;
- capturar os retornos das requisições ao servidor e tratar as exceções e/ou rejeições.
Definição
Para construção de um HTTP Interceptor basta implementar um AngularJS Factory no qual será injetado o $q. A implementação em si deve no mínimo retornar uma função na qual estejam sobrescritos as funções:
- request: function (config)
- requestError: function (rejection)
- response: function (response)
- responseError: function (rejection)
Exemplo
appHTTPInterceptors.$inject = ['$q']; function appHTTPInterceptors($q) { ... return { request: function (config) { return config || $q.when(config); }, requestError: function (rejection) { return rejection; }, response: function (response) { return response; }, responseError: function (rejection) { return rejection; } }; } // Registra a AngularJS Factory para customização do httpInterceptor padrão do AngularJS. index.factory('appHTTPInterceptors', appHTTPInterceptors);
A implementação completa das funcionalidades no HTTP Interceptor estão disponíveis na aplicação de referencia no arquivos factory-http-interceptors.js
Dicas
- Caso o sistema de notificações esteja implementado é possível tratar as mensagens de erro automaticamente interceptando as rejeições ou erros e já disparando o mensagem ou notificação ao usuário; eximindo o programador de que realizar o tratamento no retorno da requisição ao servidor.
- O contador de requisições pode ser armazenado ao $rootScope para que no AngularJS Controller principal da aplicação centralizadora possa ser validado para demonstração do tela de carregamento.
- Ao realizar o tratamento de timeout, muitas vezes o container web pode retornar diretamente a página de login ao invés de um redirecionamento automático, sendo muitas vezes necessário verificar o conteúdo do retorno para identificar se é a página de login para poder realizar o correto redirecionamento.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas