Die offizielle restangular Dokumentation provides dieser Code Probe eine Anfrage im ErrorInterceptor zu wiederholen:Retry einen Restangular Anruf in einem Abfangjäger
var refreshAccesstoken = function() {
var deferred = $q.defer();
// Refresh access-token logic
return deferred.promise;
};
Restangular.setErrorInterceptor(function(response, deferred, responseHandler) {
if(response.status === 403) {
refreshAccesstoken().then(function() {
// Repeat the request and then call the handlers the usual way.
$http(response.config).then(responseHandler, deferred.reject);
// Be aware that no request interceptors are called this way.
});
return false; // error handled
}
return true; // error not handled
});
jedoch, wie es in den Kommentaren sagt, wird der zweite Versuch auslösen keine Abfangjäger weil es $ http direkt verwendet.
Gibt es eine Möglichkeit, die zweite Anfrage auch durch die Restangular-Pipeline zu gehen und den ErrorInterceptor auszuführen?
können Sie ersetzen die $ HTTP (response.config) .then (responseHandler, deferred.reject); 'mit restApi Aufruf .. Verwenden Sie $ http Interzeptoren statt restangularen Interceptor, auch mit Restangular.Ich bevorzuge $ http Abfangjäger, weil alle angularjs api Wrapper wie Restangular intern $ http unter der Haube verwenden ... – harishr
Die Frage ist ** über ** Wechsel von '$ http' zu 'Restangular' im Abfangjäger. Verwechseln Sie 'Restangular' nicht mit einem einfachen Restanruf. –