angular - HttpInterceptor 重构错误信息

标签 angular http angular-http-interceptors

我有一个 HttpInterceptor,我希望它能重构我的错误以删除括号。

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

  constructor(public auth: AuthProvider, public app: App, private global: GlobalVariablesProvider) {}

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    return next.handle(request).do((event: HttpEvent<any>) => {
      if (event instanceof HttpResponse) {

      }
    }, (err: any) => {
      // modify err here?
    });
  }
}

我似乎无法直接修改err,而且我不确定修改后如何传递错误。我想对 err 做的修改是:

err.error.replace(/\[|]/, '')

最佳答案

在拦截器中,HTTP 错误将被 handle(request).catch(...) 捕获

你可以做的是:

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

    constructor(public auth: AuthProvider, public app: App, private global: GlobalVariablesProvider) {}

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        return next.handle(request)
            .do((event: HttpEvent<any>) => {
                if (event instanceof HttpResponse) {
                    // do what you want here if your have to
                }
            })
            .catch((err: any) => {
                if (err && err.error) {
                    err.error = err.error.replace(/\[|]/, '');
                }
                return Observable.throw(err);
            });
    }
}

关于angular - HttpInterceptor 重构错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49300953/

相关文章:

angular - 如何在 Angular 2 应用程序中使用 angular2-local-storage 模块

angular - 在 Angular 2 的多个组件中全局保存和访问值

angular - 在 Angular 2 中的 @ngModule 中声明多个组件

angular - 如何从组件访问父 HTML 元素?

http - 为什么网站重定向会出现在 Google 结果中?

java - 如何用java编写http代理?

angular - Angular 5 : Can HttpInterceptor Replace ErrorHandler

node.js - Node 的http服务器是否对ReadableStream请求进行Content-Length验证

angular - 有条件地绕过 Auth0 HttpInterceptor

javascript - 对 Angular js 中的 $http 拦截器感到困惑