共享的 AngularJS $http拦截器
Shared AngularJS $http interceptors
我想知道Angular.js $http拦截器是否在整个应用程序中共享。
假设我有一个myDependentApp
模块,在许多应用程序之间共享。该模块配置了一些拦截器来控制$http请求/响应。我通过在应用程序引导程序中声明该模块来包含该模块:
angular.module('myApp', ['myDependentApp']);
我有应用程序模板:
<html ng-app="myApp">
myDependentApp
的拦截器会在myApp
活跃吗?
感谢您的帮助。
答案是肯定的,我在这里试过:
var dependentApp = angular.module('dependency',[]).config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(function ($q) {
return {
'request': function (config) {
console.log('request intercept');
},
'response': function (response) {
console.log('response intercept');
}
};
});
}]);
var app = angular.module('myapp', ['dependency']);
app.controller('mycontroller', ['$scope', '$http', function ($scope, $http) {
$http.get('http://www.google.com');
}]);
我看到请求被拦截了。这是小提琴:http://jsfiddle.net/6dbgo6pt/1/
答案是肯定的。
直接来自文档
角度服务是:
延迟实例化 – Angular 仅在应用程序组件依赖于服务时才实例化服务。
单一实例 – 依赖于服务的每个组件都获取对服务工厂生成的单个实例的引用。
$http
就是这样一种使用提供程序配方的服务创建广告。
因此,这意味着应用程序中的每个模块都将提供相同的$http
服务,并且添加拦截器的模块将与模块共享,因为$http
服务与任何其他使用.service
、.factory
或.provider
的角度或自定义构建服务一样是一个单例。
$http 拦截器:
出于全局错误处理、身份验证或请求的任何类型的同步或异步预处理或响应的后处理的目的,希望能够在请求传递给服务器之前截获请求,并在将响应移交给发起这些请求的应用程序代码之前截获响应。拦截器利用承诺 API 来满足同步和异步预处理的这一需求。
侦听器是通过将它们添加到 $httpProvider.interceptors 数组来向$httpProvider注册的服务工厂。调用工厂并注入依赖项(如果指定)并返回拦截器。
$httpProvider:
使用 $httpProvider 更改$http服务的默认行为。
- 我无法使用angularJs($http)访问服务器
- spring和angularJS(我得到了类似HTTP状态404的错误)
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- Typescript angularjs$http获取响应类型(避免使用<any>)
- AngularJS使用http进行promise处理
- Angularjs http.get() Cross-Origin 请求被阻止
- 在AngularJS服务中使用$http回调
- AngularJs.调用$http.success中的jQuery函数
- 如何绑定“;这个“;在$http.post中->在AngularJS中解析/拒绝?(现在this=Window对象
- 访问Protractor/E2E测试中的$http数据(AngularJS)
- 处理$http AngularJS返回数据
- 如何在控制器之外使用$http?AngularJS中
- $http AngularJS 后不更新的数据范围
- $http AngularJS 应用程序初始化之前的请求
- $http angularjs 调用不是从带有 Worklight 的移动设备执行的
- 其中的行“xmlns:ng="http://angularjs.org"`工作/需要
- $http angularJS循环每个有传单问题的对象
- $http angularjs的数据,在缓存?但是为什么
- $http angularjs POST don't发送我的数据
- $http angularjs在回调时显示错误