HttpInterceptor 重构错误信息

HttpInterceptor refactor error message

我有一个 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);
            });
    }
}