Heim > Web-Frontend > js-Tutorial > Lernen Sie schnell AngularJs HTTP-Antwort-Interceptor_AngularJS

Lernen Sie schnell AngularJs HTTP-Antwort-Interceptor_AngularJS

WBOY
Freigeben: 2016-05-16 15:22:21
Original
2056 Leute haben es durchsucht

Wenn wir der Anfrage jederzeit globale Funktionen wie Authentifizierung, Fehlerbehandlung usw. hinzufügen möchten, ist es eine bessere Möglichkeit, die Anfrage abzufangen, bevor sie an den Server gesendet wird oder wenn der Server zurückkehrt.

AngularJs bietet eine Möglichkeit zur Verarbeitung auf globaler Ebene durch Interceptoren.

Vier Arten von Abfangjägern

Implementieren Sie die Anforderungsmethode, um Anforderungen abzufangen

request: function(config) {
// do something on request success
return config || $q.when(config);
} 
Nach dem Login kopieren

Diese Methode wird ausgeführt, bevor $http die Anfrage an den Hintergrund sendet, sodass Sie die Konfiguration ändern oder andere Vorgänge ausführen können. Diese Methode empfängt ein Anforderungskonfigurationsobjekt als Parameter und muss ein Konfigurationsobjekt oder ein Versprechen zurückgeben. Wenn ein ungültiges Konfigurationsobjekt oder Versprechen zurückgegeben wird, wird es abgelehnt, was dazu führt, dass der $http-Aufruf fehlschlägt.

RequestError-Methode implementieren, um Anforderungsausnahmen abzufangen

requestError: function(rejection) {
  // do something on request error  return $q.reject(rejection);
} 
Nach dem Login kopieren

Manchmal kann eine Anfrage nicht gesendet werden oder von einem Interceptor abgelehnt werden. Der Request-Exception-Interceptor erfasst die Anfragen, die vom vorherigen Request-Interceptor unterbrochen wurden. Es kann verwendet werden, um die Anfrage wiederherzustellen oder manchmal, um die vor der Anfrage vorgenommenen Konfigurationen rückgängig zu machen, z. B. das Schließen des Fortschrittsbalkens, das Aktivieren von Schaltflächen und Eingabefeldern usw.

Implementieren Sie die Antwortmethode, um die Antwort abzufangen

response: function(response) {
  // do something on response success
return response || $q.when(response);} 
Nach dem Login kopieren

Diese Methode wird ausgeführt, nachdem $http die Antwort vom Hintergrund empfangen hat, sodass Sie die Antwort ändern oder andere Vorgänge ausführen können. Diese Methode empfängt ein Antwortobjekt als Parameter und muss ein Antwortobjekt oder Versprechen zurückgeben. Das Antwortobjekt umfasst Anforderungskonfiguration, Header, Status und Daten aus dem Hintergrund. Wenn ein ungültiges Antwortobjekt zurückgegeben wird oder das Versprechen abgelehnt wird, schlägt der $http-Aufruf fehl.

Implementieren Sie die ResponseError-Methode, um Antwortausnahmen abzufangen

responseError: function(rejection) {
// do something on response error  return $q.reject(rejection);
} 
Nach dem Login kopieren

Manchmal schlägt unser Hintergrundaufruf fehl oder er wird von einem Anfrage-Interceptor abgelehnt oder von einem vorherigen Antwort-Interceptor unterbrochen. In diesem Fall kann uns der Antwortausnahme-Interceptor dabei helfen, den Hintergrundaufruf fortzusetzen.

Abfangjägerkern

Abhördienstfabrik

var app = angular.module("ajaxHttp", []);
app.factory("httpInterceptor", [ "$q", "$rootScope", function($q, $rootScope) {
return {
request: function(config) {
// do something on request success
return config || $q.when(config);
},
   requestError: function(rejection) {
     // do something on request error
     return $q.reject(rejection)
   },
response: function(response) {
// do something on response success
return response || $q.when(response);
},
responseError : function(rejection) {
// do something on response error
return $q.reject(rejection);
}
};
}]); 
Nach dem Login kopieren

Interception-Factory-Methode registrieren

app.config(["$httpProvider", function($httpProvider) {
  $httpProvider.interceptors.push("httpInterceptor");
}]); 
Nach dem Login kopieren

Beispiel

Abfangen und Verarbeiten von 401, 404

app.config(["$httpProvider", function($httpProvider) { 
$httpProvider.interceptors.push('httpInterceptor'); 
}]); 
app.factory("httpInterceptor", ["$q", "$injector", function($q, $injector) {
return {
"responseError": function(response) {
if (response.status == 401) {
var rootScope = $injector.get('$rootScope');
var state = $injector.get('$rootScope').$state.current.name;
rootScope.stateBeforLogin = state;
rootScope.$state.go("login");
return $q.reject(response);
}
else if (response.status === 404) {
console.log("404!");
return $q.reject(response);
}
}
};
]);
Nach dem Login kopieren

Der obige Inhalt soll Ihnen das relevante Wissen zum schnellen Erlernen des HTTP-Antwort-Interceptors von AngularJ vermitteln. Ich hoffe, dass er Ihnen gefällt, und danke Ihnen für Ihre fortgesetzte Unterstützung der Script House-Website.

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage