【问题标题】:AngularJS - can I skip an interceptor?AngularJS - 我可以跳过拦截器吗?
【发布时间】:2018-01-16 04:43:15
【问题描述】:

我有一个带有拦截器的 AngularJS 应用程序来显示错误消息。

有时来自后端的错误消息需要一些前端处理以提供更多上下文,例如将“访问被拒绝”更改为“您不能这样做,因为 X”。

如何才能不调用拦截器?

现在我收到了 2 条消息。来自我的控制器的消息和来自拦截器的消息。

【问题讨论】:

  • 谁应该决定何时(不)显示来自拦截器的消息?基于什么?
  • 基于我相信的控制器上已经处理的错误响应。
  • 尚未处理。 控制器得到响应之前调用拦截器。不过,控制器可以告诉拦截器它处理哪些类型的错误。
  • 是否有另一个 Angular 结构来解决这个问题?也许类似于拦截器,但 请求进入服务?我猜这个用户案例很糟糕。
  • 我的建议是控制器应该告诉拦截器在发送请求时不要处理什么,方法是在配置对象中添加该信息。

标签: angularjs angular-http-interceptors


【解决方案1】:

解决方案:

service.js:

 myFunction: function(id) {
     return $http.post('myUrl/', {}, {skipErrorInterceptor: true});
 }

interceptor.js:

'responseError': function(rejection) {
    if (rejection.config.skipErrorInterceptor) {
         return $q.reject(rejection);
    } else {
        ... Global message treatment
    }
    return $q.reject(rejection);
 }

【讨论】:

    猜你喜欢
    • 2014-10-23
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多