gpt4 book ai didi

javascript - Angularjs:如何拦截外部 url $resource 或 $http 服务中的错误?

转载 作者:行者123 更新时间:2023-11-30 10:16:02 25 4
gpt4 key购买 nike

我在与我的 grunt 服务器不同的服务器上提供了一项服务,该服务器为我的 angularjs 应用程序提供服务。
外部服务器是 Apache 服务器,使用 PHP 提供 JSON 数据。我想拦截任何可能的服务器错误(从“服务器关闭”到“404”...)。

我试过这样使用拦截器:

app.factory('myFactory', function($resource) {
return $resource('http://www.remote.server.com/api/WRONGPATH',
});

app.config(function ($routeProvider, $httpProvider) {

...

$httpProvider.responseInterceptors.push(function($q) {
return function(promise) {
return promise.then(function(successResponse) {
if (successResponse.config.method.toUpperCase() !== 'GET') {
console.info('success');
}
return successResponse;
}, function(errorResponse) {
switch (errorResponse.status) {
case 401:
console.info('wrong usename or password');
break;
case 403:
console.info('no rights to do this');
break;
case 500:
console.info('server internal error: ' + errorResponse.data);
break;
default:
console.info('error ' + errorResponse.status + ': ' + errorResponse.data);
}
return $q.reject(errorResponse);
});
};
});

});

没有成功:我总是陷入“默认”开关情况,errorResponse.status == 0
我想这是因为浏览器在拦截 CORS 错误时停止...
如果我将远程 URL 更改为本地 URL,一切都会正常...

是否有可能处理 angular.js $resource(或 $http)远程请求错误?

我也会接受设计转变建议,例如以类似 grunt 的方式重新实现我的 PHP 服务...(我的 PHP 服务 - 实际上 - 只是从服务器文件夹打印图像名称的 JSON 列表.. .).

最佳答案

我相信您将拦截器推到了错误的位置。 $http docs表明你应该插入:

$httpProvider.interceptors

而不是:

// I can only find references to this on old tutorials, so maybe it's been deprecated
$httpProvider.responseInterceptors

所以你会有这样的东西:

$httpProvider.interceptors.push(function($q) {
return {
'response': function(response) {
if (successResponse.config.method.toUpperCase() !== 'GET') {
console.info('success');
}
return response || $q.when(response);
},
'responseError': function(response) {
switch (response.status) {
case 401:
console.info('wrong usename or password');
break;
case 403:
console.info('no rights to do this');
break;
case 500:
console.info('server internal error: ' + response.data);
break;
default:
console.info('error ' + response.status + ': ' + response.data);
}

return $q.reject(response);
}
};
});

工作计划:here

关于javascript - Angularjs:如何拦截外部 url $resource 或 $http 服务中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com