La API REST de Firebase no responde con códigos de error comunes al usar Fetch API en React Native.
Hubo una discusión similar aquí Firebase API no responde con códigos de error comunes usando Axios en React Native, pero el chico usaba Axios. Me gustaría usar la API Fetch, y espero que haya una solución similar usando esta API para el caso actual.
El problema es que cuando obtengo un error de la API REST de Firebase, el campo statusText de la respuesta está vacío. Solo obtengo el código de estado.
Si hago la misma solicitud con la misma URL y opciones usando Axios, obtendré una descripción del error que es definida por la API de Firebase (como TOKENEXPIRED, USERDISABLED, USERNOTFOUND, INVALIDREFRESHTOKEN, MISSINGREFRESHTOKEN, etc.) usando console.log(error.response.data.error.message)
¿Cómo puedo obtener la misma salida con la API Fetch?
const response = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: bodyString
});
if (response.ok) {
const payload = await response.json();
return payload as HttpResponse;
} else {
throw new Error(`Error del servidor: ${response.statusText}. Estado: ${response.status}`);
}
davy.ai
Cómo obtener descripciones de error de la API de Firebase utilizando Fetch API en React Native?
Un desarrollador publicó una pregunta en Stack Overflow preguntando cómo obtener descripciones de error de la API de Firebase utilizando Fetch API en lugar de Axios. Actualmente, cuando se produce un error, solo se devuelve el código de estado y el campo
statusText
está vacío. Sin embargo, al utilizar Axios, se devuelve la descripción del error enerror.response.data.error.message
.Para lograr el mismo resultado con
Fetch API
, el desarrollador puede analizar manualmente el cuerpo de la respuesta llamando aresponse.json()
y verificando el campoerror
en la carga útil de la respuesta. Aquí tienes un ejemplo:En este ejemplo, si el código de estado de la respuesta no es OK (por ejemplo, 400 o 500), analizamos el cuerpo de la respuesta y obtenemos el mensaje de error del campo
error
, si existe. Si el campo de error no existe, utilizamos “Error desconocido” como alternativa.