在我的角度应用程序中,我想覆盖$ http。因此,只要有$ http服务调用,它就会在原始数据中附加一些默认数据并发送请求。类似地,当响应到来时,它将检查一些特定数据并重新格式化,success()将获得修改后的响应。
我是Angularjs的新手。任何人都可以帮我吗?
提前谢谢。
答案 0 :(得分:2)
看看$ http拦截器(https://docs.angularjs.org/api/ng/service/ $ http)。使用它们,您可以拦截请求和ajax请求的响应。
创建如下服务:
module.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
return {
'request': function(config) {
// do something pre-request, like inject Headers properties:
//config.headers['Authorization'] = '';
return config;
},
'requestError': function(rejection) {
//do something with the error
return $q.reject(rejection);
},
'response': function(response) {
// do something on success of request
return response;
},
'responseError': function(rejection) {
// do something on error like:
//if(response.status == 401){
// userUnauthorized();
//}
return $q.reject(rejection);
}
};
});
在您的app配置中,按下拦截器:
module.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('myInterceptor');
}]);
答案 1 :(得分:0)
你必须通过在angular中实现的$ http方法进行探索。你可以看到一个功能
function sendReq (config, reqData, reqHeaders)
您可以根据需要更改reqData。 现在类似于成功和完成功能,您可以使用您的代码在将数据发送到回调之前对其进行操作。 否则,您也可以更改来自xhr请求的数据。 这将是你在函数createxhr()中以angular
编写的答案 2 :(得分:0)
您也可以使用以下代码。
//或者,通过匿名工厂注册拦截器
datetime