Tengo algunas preguntas sobre cómo solicitar la API del servidor. Hago una función para la API de solicitud, el ejemplo, tengo un inicio de sesión de la API de solicitud cuando el usuario completa el correo electrónico incorrectamente, la API de respuesta es "¡el correo electrónico o la contraseña son incorrectos!", Cuando intento en cartero, la respuesta es exitosa, pero cuando intento en mi código la respuesta siempre de la captura, no de la API de respuesta. Mi código para solicitar API como a continuación
const handleSubmitLogin = async (input) => { try { const result = await axios.post(`${BASE_URL}/users/client/login`, input); if (result.status == 200 || result.status === "success" || result.status == 201) { await setAuthKey(result.data.data.token); await setLoggedUser(JSON.stringify(result.data.data)); dispatch(setUserLogin()); dispatch(setDataLogin(result.data.data)); } else { setModalActive({ status: true, data: result.message }); } } catch (error) { console.log(error); setModalActive({ status: true, data: translations["please.try.again"] }); } };
cuando un usuario ingresa incorrectamente un correo electrónico o una contraseña, la respuesta siempre es de la respuesta de captura, no de la respuesta de la API. ¿Alguien puede dar sugerencias para este caso?
Editar: este es el resultado de cuando el usuario tiene una contraseña incorrecta
Si su API responde con un código de estado no exitoso (>= 400), Axios rechazará la promesa y su código irá al bloque catch
.
Todavía puede acceder a los datos de respuesta a través de error.response.data
. Ver Axios - Manejo de errores
try { const result = await axios.post(`${BASE_URL}/users/client/login`, input); // etc... } catch (err) { console.warn("login", error.toJSON()); setModalActive({ status: true, data: error.response?.data?.message ?? translations["please.try.again"], }); }
Es importante usar el encadenamiento opcional , ya que es posible que el error no tenga una respuesta o datos dependiendo de qué falló exactamente.