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); }
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); }
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);}
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); }
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); } }; }]);
Interception-Factory-Methode registrieren
app.config(["$httpProvider", function($httpProvider) { $httpProvider.interceptors.push("httpInterceptor"); }]);
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); } } }; ]);
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.