我正在使用 angular.js 开发 Web 应用程序,我目前对处理错误的正确方法有些困惑。在我的应用程序中,我使用 ngResource 来调用服务器的 rest API。所以我会有很多 ngResource api 调用。
例如用户资源,有 user.query(), user.get(), user.save() ......
我是否想将错误回调放入所有 ngResource api 调用中?
只是为了处理各种错误:比如服务器关闭或无法访问互联网??
我只是不认为在每个 ngResource api 调用中放置一个错误回调是一个好主意。这会产生大量冗余代码并使我的代码不整洁。
您将如何处理各种错误类型?
最佳答案
您可以使用拦截器并在发生错误时做任何您想做的事情:
var app = angular.module("myApp", []);
app.config(function ($provide, $httpProvider) {
$provide.factory('ErrorInterceptor', function ($q) {
return {
responseError: function(rejection) {
console.log(rejection);
return $q.reject(rejection);
}
};
});
$httpProvider.interceptors.push('ErrorInterceptor');
});
使用此拦截器,您可以读取状态代码并执行您需要的操作(一个完美的用例是如果状态代码为 401,则将您的用户重定向到登录页面)。
由于 ngResource 使用 $http,当你调用资源方法时,你的拦截器也会被执行。
当然,您可以做更多的事情并在发出请求之前/之后添加拦截器。
请在此处查看完整文档:http://docs.angularjs.org/api/ng.$http
看到这个 fiddle :http://jsfiddle.net/4Buyn/对于工作样本。
关于angularjs - 如何正确处理服务器端错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254714/