Home >Web Front-end >JS Tutorial >Quickly learn AngularJs HTTP response interceptor_AngularJS
Any time, if we want to add global functionality to the request, such as authentication, error handling, etc., it is a better way to intercept the request before it is sent to the server or when the server returns.
angularJs provides a way to process at the global level through interceptors.
Four types of interceptors
Implement the request method to intercept requests
request: function(config) { // do something on request success return config || $q.when(config); }
This method will be executed before $http sends the request to the background, so you can modify the configuration or do other operations. This method receives a request configuration object as a parameter and must return a configuration object or a promise. If an invalid configuration object or promise is returned, it will be rejected, causing the $http call to fail.
Implement requestError method to intercept request exceptions
requestError: function(rejection) { // do something on request error return $q.reject(rejection); }
Sometimes a request fails to be sent or is rejected by an interceptor. The request exception interceptor will capture those requests that were interrupted by the previous request interceptor. It can be used to restore the request or sometimes to undo the configuration made before the request, such as closing the progress bar, activating buttons and input boxes, etc.
Implement the response method to intercept the response
response: function(response) { // do something on response success return response || $q.when(response);}
This method will be executed after $http receives the response from the background, so you can modify the response or do other operations. This method receives a response object as a parameter and must return a response object or promise. The response object includes request configuration, headers, status and data from the background. If an invalid response object is returned or the promise will be rejected, the $http call will fail.
Implement responseError method to intercept response exceptions
responseError: function(rejection) { // do something on response error return $q.reject(rejection); }
Sometimes our background call fails, or it may be rejected by a request interceptor or interrupted by a previous response interceptor. In this case, the response exception interceptor can help us resume the background call.
Interceptor Core
Interception Service Factory
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); } }; }]);
Register interception factory method
app.config(["$httpProvider", function($httpProvider) { $httpProvider.interceptors.push("httpInterceptor"); }]);
Example
Interception and processing of 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); } } }; ]);
The above content is to share with you the relevant knowledge of quickly learning AngularJs HTTP response interceptor. I hope you like it, and thank you for your continued support of the Script House website.