Как правильно настроить сервисный метод angular, чтобы клиентский компонент мог правильно реагировать на ошибки HTTP, возникающие при вызове? - PullRequest
0 голосов
/ 15 апреля 2020

Давайте представим, например, что у нас определен angular 8 клиентский компонент (componentA), который зависит от метода (getPeople), определенного в сервисе (serviceA).

serviceA.getPeople в свою очередь вызывает Конечная точка http (остальные API). Возможно, что ответ http от внешнего API возвращает ошибку (скажем, 500)

Как мы можем спроектировать serviceA и componentA таким образом, чтобы componentA мог реагировать так, как он считает нужным? (вместо того, чтобы, скажем, сделать так, чтобы служба A определяла, как реагировать на ошибки для ВСЕХ клиентов / абонентов)

Вот 1 способ, которым я верю, что этого можно достичь. В serviceA есть метод, определенный как

getPeople(): Observable<IPeople[]> {
    return this.http.get<IPeople[]>(url)
}

И в componentA , настройте вызывающего абонента как

this.serviceA.getPeople().subscribe(
    (response) => {
        // Do something with response
    },
    (errorResponse) => {
        // Handle error in way component wants to handle it
        // ex. Show toast message saying "Error in obtaining people. Please 
        // refresh to try and obtain people again." Something like that
    }
);

Есть ли какие-либо разумные недостатки этого подхода? Кроме того, какими еще способами можно организовать код, чтобы вызывающий абонент (компонент A) имел полный контроль над тем, как он реагирует на ошибки, и в то же время разрабатывал услугу A для других вызывающих абонентов?

Подход Я выше описал лучший способ решения этой проблемы?

...