Получить обработчик API и прочитать сообщения об ошибках - PullRequest
2 голосов
/ 13 июня 2019

У меня следующий вызов API выборки в JavaScript

async doCheckin(authCode) {
    return await fetch(endpoint + "/checkin", {
        method: "put",
        headers: new Headers({'content-type': 'application/json'}),
        body: JSON.stringify({authCode: authCode})
    })
        .then(this.checkStatus)
        .then(this.toJson)
        .catch(function (error) {
            console.error("Checkin not successful");
            throw error;
        });
}

async checkStatus(response) {
    if (response.status >= 200 && response.status < 300) {
        return Promise.resolve(response)
    } else {
        let errorJson = await response.json();
        return Promise.reject(errorJson.code);
    }
}

toJson(response) {
    return response.json()
}

Функция называется так

   let checkIn = (await apiService.doCheckin(code)
        .catch(displayError));

Этот вызов должен обрабатывать ответы об ошибках в JSON с сервера и отображать код ошибки. Я заметил, что некоторые мобильные браузеры в приложении не могут обработать ошибку и выдают ошибку let errorJson = await response.json();

Это правильный способ обработки и чтения сообщений об ошибках или есть лучший способ добиться этого?

1 Ответ

0 голосов
/ 13 июня 2019

Проблема с использованием этого:

let errorJson = await response.json ();

означает, что вы не обрабатываете случай, когда вызов метода json() завершается неудачно. Вместо этого вы должны делать что-то вроде этого, где вы справляетесь.

try {
  let errorJson = await response.json();

  return Promise.reject(errorJson.code);
} catch (e) {
  // I don't know what error is occurring so just reject with a 503 
  return Promise.reject('503');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...