2017-12-06 4 views
0

현재 상황 :http 오류를 처리하는 올바른 방법은 무엇입니까?

:

public update(route: string, values: Array<any>): Observable<boolean> { 
    let body = { values: values }; 

    return this.httpClient.put(route, body, { 
    observe: 'response' 
    }) 
    .map((res) => { 
    let status = res.status; 
    switch (status) { 
     case 202: 
      return true; 
    } 
    }, error => { 
    switch (error.status) { 
     case 406: 
      return false; 
    } 
    }); 
} 
  • 내가 그래서 난 모든 요청에 ​​토큰을 추가 할 수있는 HTTP 인터셉터 있습니다

    1. 내가 백엔드 데이터를 저장할 service.ts이

      public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
          return next 
          .handle(request) 
          .do(event => { 
      
          }) 
          .catch((error: any) => { 
      
          }); 
      } 
      
    2. 그리고 나는 정상적으로 결과가 필요한 곳에 저장 방법을 가진 구성 요소를 가지고 있습니다.

      public save(form: FormGroup) { 
          let path = '...'; 
          this.service.update(path, form.value) 
          .subscribe(result => { 
           // success 
          }, error => { 
           // fail 
          }); 
      } 
      

    나는 물건을 함께 모으는 법을 모른다. 구성 요소에서 save 메소드를 트리거하고 구성 요소에서 결과 (성공, 오류)가 필요합니다.

    지금 나는 나의 인터셉터에서만 결과를 얻을 수 있습니다. 그러나 이것은 잘못된 곳입니다.

  • 답변

    1
    public update(route: string, values: Array<any>): Observable<boolean> { 
        let body = { values: values }; 
    
        return this.httpClient.put(route, body, { 
        observe: 'response' 
        }); 
    } 
    // You don't need map for httpClient 
    

    그런 다음 HttpInterceptor을 구현하는 올바른 방법은 다음과 같습니다

    public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
        return next.handle(request).do(
         (response: HttpEvent<any>) => { 
         // Do stuff with success 'response instanceof HttpResponse' 
         }, 
         (error: any) => { 
         // Do stuff with error 'error instance of HttpErrorResponse' 
         }); 
    } 
    
    +0

    이런 식으로 ... 감사를 작동하는 것 같다! – HansDampfHH

    관련 문제