Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...


Observação: Devido a padronização do retorno das requisições é possível identificar quando a requisição retorno alguma notificação ou mensagem sendo possível exibi-la automaticamente ao usuário, eximindo o desenvolvedor de ter que trata-la manualmente.

Definição

A implementação da transformação de resposta consistem em sobrescrever a função transformResponse do $httpProvider do AngularJS. Ao sobrescrever esta função temos a possibilidade de manipular o resultado de todas as requisições HTTP e realizar diversos tratamentos como a exibição das notificações ou mensagens e de realizar o tratamento de uma resposta customizada antes de disparar o evento de sucesso da requisição.

...

Bloco de código
languagejs
firstline1
titleExemplofirstline1
linenumberstrue
appHTTPConfig.$inject = ['$httpProvider'];
function appHTTPConfig($httpProvider) {
	
	$httpProvider.defaults.transformResponse = function (data, headers) {

		// Todas as requisições que não retornem o resultado no padrão JSON
		// devem ser desconsideradas. Outros tipos de protocolos devem ser 
		// tratados separadamente.
		if (headers('content-type') != "application/json") return data;

		// Realiza o parser do resultado para um objeto do tipo JSON;
		var decodeddata = $("<div/>").html(data).text();
		var obj = angular.fromJson(decodeddata);

		// Verifica se o objeto possui um atributo do tipo messages para tratamento
		// automático de mensagens e notificações através de eventos.
		if (obj.hasOwnProperty('messages')) {
		
			...
			
		}

		// Verificar se o objeto possui a estrutura padrão do Return implementada
		// pelo servidor para realização do tratamento de equivalência do objeto Return a
		// o padrão das chamadas REST.
		if (obj.hasOwnProperty('data') 
			&& obj.hasOwnProperty('length') 
			&& obj.hasOwnProperty('messages')) {

			...
		}
		
		// Quando não se tratar de um objeto do tipo Return na requisição retornar o objeto completo.
		return obj;
	};

	// Adiciona o appHTTPInterceptors ao HTTP Provider.
	$httpProvider.interceptors.push('appHTTPInterceptors');	
}

// Registra a configuração HTTP customizadas para o App.
index.config(appHTTPConfig);

...