$httpProvider.interceptors
Angular 1.1.4+でインターセプターを追加することで応答をインターセプトできます(インターセプターについては、こちらのドキュメントを参照してください)。
jsonのような特定のコンテンツタイプの場合、呼び出しが成功した場合でも、変更を拒否したり、例外をスローしたりする可能性があります。response.data
ここでも、コントローラーコードに渡されるを変更できます。
myModule.factory('myHttpInterceptor', function ($q) {
return {
response: function (response) {
// do something on success
if(response.headers()['content-type'] === "application/json; charset=utf-8"){
// Validate response, if not ok reject
var data = examineJSONResponse(response); // assumes this function is available
if(!data)
return $q.reject(response);
}
return response;
},
responseError: function (response) {
// do something on error
return $q.reject(response);
}
};
});
myModule.config(function ($httpProvider) {
$httpProvider.interceptors.push('myHttpInterceptor');
});
注: 1.1.4より前のバージョン(responseInterceptors
Angular 1.1.4で非推奨)の元の回答は次のとおりです。
より良い方法があるかもしれませんが、呼び出しが成功したにもかかわらず、変更を拒否したり例外をスローしたりする可能性のあるhttp応答インターセプター(ここで説明)(jsonなどの特定のコンテンツタイプ用)を使用して、この投稿と同様のことを行うことができると思います。ここでも、コントローラーコードに渡されるを変更できます。response.data
myModule.factory('myHttpInterceptor', function ($q) {
return function (promise) {
return promise.then(function (response) {
// do something on success
if(response.headers()['content-type'] === "application/json; charset=utf-8"){
// Validate response if not ok reject
var data = examineJSONResponse(response); // assumes this function is available
if(!data)
return $q.reject(response);
}
return response;
}, function (response) {
// do something on error
return $q.reject(response);
});
};
});
myModule.config(function ($httpProvider) {
$httpProvider.responseInterceptors.push('myHttpInterceptor');
});