Я пишу мобильное приложение с использованием React Native. В какой-то момент мне нужно отправить запрос на почту и получить ответ, включая часть с ошибкой. Таким образом, для некоторого определенного ввода API (мой собственный) возвращает 409 с сообщением. Пример возврата:
{
"status": 409,
"message": "E-mail is already exists!"
}
Здесь я хочу взять это сообщение и показать пользователю. Это то, что я пробовал:
UserService.signup({ fullName, email, username, password })
.then(response => {
this.setState({ signUp: true });
if (response.result) {
Toast.show(messages.successfulSignUp, {
backgroundColor: "green",
duration: Toast.durations.LONG,
position: Toast.positions.TOP
});
this.props.navigation.navigate("SignIn");
} else {
}
})
.catch(error => {
Toast.show(error.message, {
backgroundColor: "red",
duration: Toast.durations.LONG,
position: Toast.positions.TOP
});
this.setState({ signUp: false });
});
Я пробовал error.message, error.response, error, error.data
ключи, но это всегда говорит TypeError: undefined is not an object (evaluating 'error.message')
. Итак, как я могу получить сообщение от объекта ошибки?
Редактировать: Так я отправляю запрос:
import { post } from "./api";
export default {
signup: ({ fullName, email, username, password }) => {
return post("/user/register", { fullName, email, username, password });
}
};
export const request = config => {
return new Promise((resolve, reject) => {
axiosInstance
.request({
url: config.url,
method: config.method || "get",
data: config.body,
headers: {
"Content-Type": "application/json",
"X-Auth-Token": store.getState().auth.token
}
})
.then(response => {
resolve(response.data);
})
.catch(error => {
reject(error.data);
});
});
};
export const post = (url, body = {}) => {
return request({
url,
body,
method: "post"
});
};