gpt4 book ai didi

angularjs - 为什么在使用拦截器时将错误代码 (500) 的响应视为成功响应

转载 作者:可可西里 更新时间:2023-11-01 17:05:56 25 4
gpt4 key购买 nike

我正在尝试使用 Angular 拦截器来处理我的 500403 错误代码。对于其他代码,我有自定义业务实现。然而,似乎使用拦截器使 Angular 将错误响应视为成功响应,并且我在 .then 中的成功回调被调用。这不奇怪吗,考虑到文档说 200-299 代码仅被视为成功响应。

我的代码:

function appInterceptorFn(){
var interceptor = {
responseError: function (config) {
if (config && config.status === cramConfig.FORBIDDEN_ACCESS_CODE) {
$rootScope.$emit('ERROR_EVENT', config);
}
return config;
}
}

return interceptor;
}

有什么可以避免的吗,我正在使用 AngularJS v1.3.17

我访问过这个link它显示了不同的实现,但我想最好使用拦截器。

这是一个已知问题吗?

最佳答案

通过“正常”返回您的对象,您告诉 Angular 将您的错误视为成功。

你必须更换你的

  return config;

  return $q.reject(config);

解释

如果您查看此处的文档:https://docs.angularjs.org/api/ng/service/$http#interceptors ,您将看到以下内容:

// optional method
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}

我知道这不是很多文档,但它告诉您,如果您返回一个对象或一个 promise ,它将解决您的错误,就好像没有错误一样。如果您希望重新抛出错误,则必须使用 $q.reject()

明确地执行此操作

关于angularjs - 为什么在使用拦截器时将错误代码 (500) 的响应视为成功响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43584298/

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