代码之家  ›  专栏  ›  技术社区  ›  Jeremy Thomas

HttpInterceptor重构错误消息

  •  1
  • Jeremy Thomas  · 技术社区  · 6 年前

    我有一个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.error.replace(/\[|]/, '')
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Pierre Mallet    6 年前

    在拦截器中,HTTP错误将通过句柄(请求)捕获。捕获(…)

    您可以做的是:

    @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);
                });
        }
    }