Estoy tratando de hacer una solicitud de back-end a un servidor y sigo recibiendo una response.data . Datos que son algo de HTML como una cadena que dice TypeError: Cannot read property of undefined
Necesito pasarle un objeto data que se vea así:
const data = { visitorId, patientId: oldPatientId, doctorId }y necesito pasarle un token web json así:
const userJWT = jwt.sign( { _id: visitorId, refreshCount: 0 }, this.localConfig.spyrt.jwtSecret )y encabezados que se ven así:
const headers = { 'Content-Type': 'application/json', 'Authorization': `Bearer ${userJWT}` }Estoy haciendo esto dentro de un método asíncrono así:
async jwtTest(visitorId: number, oldPatientId: number, doctorId: number): Promise<void> { const data = { visitorId, patientId: oldPatientId, doctorId } const userJWT = jwt.sign( { _id: visitorId, refreshCount: 0 }, this.localConfig.spyrt.jwtSecret ) const headers = { 'Content-Type': 'application/json', 'Authorization': `Bearer ${userJWT}` } if (this.localConfig.spyrt.active) { const dto = await axios.post(visitURL, data, {headers}).then((response) => { console.log(response.data); }).catch((error) => { console.log(error); }); } } Me preocupa que mi código axios no esté configurado correctamente. No puedo leer la propiedad indefinida y un error de statusCode de estado 500.
He consultado la documentación de axios lo mejor que he podido. ¿Alguien ve algo malo en mi configuración?
Probé esta implementación:
if (this.localConfig.spyrt.active) { await axios.post(visitURL, data, {headers}).then(function(response) { console.log(JSON.stringify(response.data)); }).catch(function(error) { console.log(error); }) }y con este obtengo exactamente la misma respuesta.
Lo más cerca que tengo de entender esa API es el código del ingeniero anterior cuya configuración se veía así:
try { let response = await fetch(visitURL, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + acct.jwt }, body: JSON.stringify(visit) }); if (response.ok) { let result = await response.json(); callback(result); } else { throw new Error('Model: createVisit failed!'); } } catch (error) { console.log(error); }Usaría async/await o promise, pero no ambos en la misma invocación. La solución más rápida sería:
try { const dto = await axios.post(visitURL, data, {headers}) const data = dto.data console.log(data) } catch (err) { console.log(error) }TLDR: asegúrese de acceder correctamente a su objeto de respuesta
Me encontré con esta publicación y mi problema terminó porque me faltaba un '.datos' en mi acceso a objetos
Yo tenía esto (mal)
axios .post(`${process.env.VUE_APP_ROOT_URL}/score/`, {'day':today}) .then(response => { response.categories.forEach(element => console.log(element.score)); })vs el correcto:
axios .post(`${process.env.VUE_APP_ROOT_URL}/score/`, {'day':today}) .then(response => { response.data.categories.forEach(element => console.log(element.score)); })