Обрабатывать ошибки при вызове API с помощью - PullRequest
0 голосов
/ 07 января 2019

На компоненте Angular 7 я звоню в сервис:

this.postService.getByCategoryId(10)

    .subscribe((response: GetPostsByCategoryIdResponse>) => {

      this.posts = response.map((post: PostModel) => ({ 
        id: response.id, 
        title: response.title, 
        category: response.category.name
      }));

    });

Я сопоставляю GetPostsByCategoryIdResponse, который имитирует структуру данных, возвращаемую API, с PostModel, который используется в компоненте.

GetByCategoryId PostService вызывает API:

  public GetByCategoryId(id: number): Observable<GetPostsByCategoryIdResponse> {

    return this.httpClient.get<GetPostsByCategoryIdResponse>(url);

  }

Как обрабатывать ошибки, которые могут возникнуть при вызове API?

1 Ответ

0 голосов
/ 07 января 2019

Чтобы перехватить ошибки, вы «передаете» наблюдаемый результат из http.get () через оператор RxJS catchError ().

https://angular.io/tutorial/toh-pt6#error-handling

return this.httpClient.get<GetPostsByCategoryIdResponse>(url)
   .pipe(catchError((error) => {
          // some code
         return throwError("some error");
    })

Кроме того, чтобы имитировать данные, принятые postModel, вы можете использовать оператор mapx (rxjs) для изменения Observable вместо изменения результата в subscribe ().

return this.httpClient.get<GetPostsByCategoryIdResponse>(url)
   .pipe(
        map(data) => {
           // your mapping
           return mappedData
        },
        catchError((error) => {
              // some code
             return throwError("some error");
        })
...