например,
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
console.error(err);
} finally {
console.log(apiRes);
}
})();
в finally
apiRes
вернет значение null.
Даже когда api получает ответ 404, в ответе есть еще полезная информация, которую я бы хотел использовать.
Как я могу использовать ответ об ошибке в finally
когда axios выдает ошибку.
Согласно документации, полный ответ доступен как свойство response
на ошибку.
Поэтому я бы использовал эту информацию в блоке catch
:
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
console.error("Error response:");
console.error(err.response.data); // ***
console.error(err.response.status); // ***
console.error(err.response.headers); // ***
} finally {
console.log(apiRes);
}
})();
Но если вы захотите в finally
, просто сохраните его в переменной, которую вы можете использовать там:
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
apiRes = err.response;
} finally {
console.log(apiRes); // Could be success or error
}
})();
В соответствии с документацией AXIOS (здесь: https://github.com/axios/axios) вы можете передать validateStatus: false
в объекте конфигурации любому запросу axios.
например
axios.get(url, { validateStatus: false })
axios.post(url, postBody, { validateStatus: false })
Вы также можете передать функцию, подобную этой: validateStatus: (status) => status === 200
соответствии с документами поведение по умолчанию - это функция, которая возвращает true, если (200 <= status <300).
err
? Я не могу понять, почему вы хотите получить его вfinally
а не вcatch
, но если вы это сделаете, просто сохраните его вcatch
в переменной, к которой вы можете получить доступ вfinally
.catch
не содержит ответ API. если я смогу обойти это, тогда ваш метод сработает!