Usando Axios , estoy tratando de pasar datos JSON como params a la URL del punto final.
Mis params :
const annotations = { "key": "Book.pdf", "pages": [ { "start": "12", "end": "20" }, { "start": "35", "end": "40" } ] } Mi función async :
try { const result = await axios.get(endpoint, { params: annotations, paramsSerializer: params => parseParams(params), headers: { 'Authorization': 'Bearer ' + jwtToken, 'Content-Type': 'application/json' }, 'withCredentials': true }); } catch (error) { console.log(error); }Función para analizar la URL ( GitHub ):
const parseParams = (params) => { const keys = Object.keys(params); let options = ''; keys.forEach((key) => { const isParamTypeObject = typeof params[key] === 'object'; const isParamTypeArray = isParamTypeObject && (params[key].length >= 0); if (!isParamTypeObject) { options += `${key}=${params[key]}&`; } if (isParamTypeObject && isParamTypeArray) { params[key].forEach((element) => { options += `${key}=${element}&`; }); } }); return options ? options.slice(0, -1) : options; }; El problema es que da como resultado el error 500 :
https://api.mysite.com/ConvertBook?key=Book.pdf®ions=[object%20Object]®ions=[object%20Object]No puedo encontrar una solución en la web, entonces, ¿cómo puedo analizar la matriz de objetos JSON en Axios?
Yo usaría JSON.stringify en tus parámetros...
const parseParams = (params) => { const keys = Object.keys(params); let options = []; keys.forEach((key) => { options.push(`${key}=${encodeURIComponent(JSON.stringify(params[key]))}`); }); return options.join('&'); };