したがって、角度のHTTPドキュメントからインターセプタをまっすぐに引き出しましたが、これはまだ動作しません。 "request"と "response"関数は呼び出されますが、 "requestError"や "responseError"関数は呼び出されません。Angular HTTPインターセプタはエラー機能を打ちません
myApp.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(function ($q) {
return {
'request': function (config) {
return config; //gets called
},
'requestError': function (rejection) {
return $q.reject(rejection); //Never gets called
},
'response': function (response) {
return response; //gets called
},
'responseError': function (rejection) {
return $q.reject(rejection); //Never gets called
}
};
});
}]);
サーバーでは、400を返していますが、実際にはエラーが発生します。ここにサービスがあります
User.publicProfileGetProfile = function (value, type) {
return $http({
url: '/public/profile/' + type + '/' + value,
method: 'GET'
}).then(function (response) {
return response;
}, function(error){
return error;
});
};
すべての応答関数が呼び出されておらず、すべての応答が応答関数を経由しています。通常のように、標準的な角度誤差がBad Request(400)で表示されます。 400エラーが返されると、インターセプタの 'response'関数を介して単に '未定義'になります。
重要な情報を含めるのを忘れた場合はお知らせください。
私はその変更を行いました...しかし、 '応答'機能はまだ呼び出されていますが、コントローラでは、エラー結果はまだ呼び出されません。 – fjaxyu
[this JSFiddle DEMO](https://jsfiddle.net/hawfLnx1/)でステータス400のレスポンスに対して 'errorResponse'インターセプタが呼び出されます。 – georgeawg
ありがとうございました! JSFiddleが正常に動作しているのを見たとき、私はまったく同じように見えました。それがうまくいかないときは、問題を引き起こす可能性のある他のインターセプタがあるかどうかを調べました。私は最初にヒットし、エラーを応答として返す別のインターセプターを持っていました。そして、それを通って成功した応答として処理します。私はそれを削除し、すべてが正しく動作しているようだ! – fjaxyu