#javascript #reactjs #api #http #react-redux
#javascript #reactjs #API #http #react-redux
Вопрос:
У меня есть форма на странице, и при заполнении полей я нажимаю отправить. Он вызывает Post API для серверной части. Я также ожидаю некоторого ответа от вызова API. Я пытаюсь выяснить, как различать успешный ответ и ответ с ошибкой.
например, для успеха я получаю следующий ответ.
{
"data": {
"attributes": {
//These are the fields and i display the field values on the page
"age": 32,
"sex": 'male'
}
}
}
В случае сбоя при выполнении вызова API я получаю ответ ниже
{
"errors": [
{
"status": "401",
"title": "Unauthorized request"
}
]
}
Даже если есть какие-либо другие причины сбоя, например Unauthorized access
, или Internal server error
, я буду получать соответствующие «статус» и «заголовок» в errors
массиве, как показано выше.
Как я могу определить, является ли ответ успешным или неудачным, и если это сбой, как мне проверить, какой статус сбоя возвращается. Может кто-нибудь, пожалуйста, помочь в понимании этого.
Ответ №1:
Вы можете добавить еще 2 действия — одно для успеха, а другое для сбоя.
В функции Saga * добавьте блок try-catch. В try после команды вызова Api post вы можете запросить успешное действие. В catch вы можете запросить действие сбоя.
try {
const result = yield call(axios.POST, ....) // API Post call
yield put(actions.successAction(result))
} catch(error) {
yield put(actions.failAction(error))
}
Комментарии:
1. я понял эту часть. я не понимаю ту часть, где я могу выяснить, был ли ответ успешным или это был ответ на сбой
2. Получается ли, что все успешные вызовы API выполняются в блоке try, а все сбои в вызове API попадают в блок catch?
3. правильно. успешный вызов api будет в try, а сбой — в catch.