Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
173
rated 0 times [  177] [ 4]  / answers: 1 / hits: 31641  / 10 Years ago, fri, october 3, 2014, 12:00:00

I am new to angular (and programming), here is a seemingly simple question but I could not figure it out.



some tutorials suggests using $httpProvider.interceptors.push('interceptorName') to manipulate the http request and response.



I want to know more about the interceptor thing so I look at the official document, but I could not find anything related to interceptor, there are only a method (useApplyAsync([value]);) and a property (defaults) in $httpProvider (docs).



I know from other tutorials that an interceptor is a regular service factory and I know how to use it, but my question is: since the syntax is $httpProvider.interceptors.push('interceptorName'), then I expect I will find a property called interceptors in $httpProvider, but in fact I can't. Is something I miss to get this confusion? or is my concept totally wrong from the bottom?


More From » angularjs

 Answers
7

Interceptors are in the documentation here.


Here's an example of how to write one.


.config([
'$httpProvider',
function($httpProvider) {

var interceptor = [
'$q',
'$rootScope',
'userSession',
function($q, $rootScope, userSession) {

var service = {

// run this function before making requests
'request': function(config) {

if (config.method === 'GET' || userSession.isAuth()) {
// the request looks good, so return the config
return config;
}

// bad request, so reject
return $q.reject(config);

}

};

return service;

}
];

$httpProvider.interceptors.push(interceptor);

}
])

The reason there's nothing on the $httpProvider documentation page about interceptors is because the developers didn't include the following code in the $http script from which the docs are generated:


/**
* @ngdoc property
* @name $httpProvider#interceptors
* @description
// etc

Documentation in general is known to be incomplete, inaccurate, and/or confusing. Until recently, I always thought I was the problem when I couldn't find or understand something, but I've found that it's often because documentation is just lousy. However, we should all be thankful that we have such great tools to use and keep in mind that perhaps the documentation is poor because time had to be focused on writing the tool instead of the manual for the tool.


The most reliable "documentation" is the source code itself, though it can be a lot less friendly to read! In the source code I linked above, you can see this.interceptors = []. this refers to the $httpProvider, so it is assigning the property interceptors to $httpProvider with the value being an empty array. To add your interceptors, you simply push() your interceptor to this array.


[#69258] Tuesday, September 30, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
raymondd

Total Points: 620
Total Questions: 112
Total Answers: 94

Location: Namibia
Member since Mon, Feb 21, 2022
2 Years ago
raymondd questions
Thu, Apr 22, 21, 00:00, 3 Years ago
Thu, Jul 9, 20, 00:00, 4 Years ago
Thu, Apr 9, 20, 00:00, 4 Years ago
Thu, Jul 25, 19, 00:00, 5 Years ago
;