Tengo una API que actualiza los datos en la base de datos pero luego devuelve una consulta. La API toma un solo parámetro y funciona cuando se prueba manualmente a través del navegador y cuando también se prueba usando una solicitud de obtención de axios. Sin embargo, por motivos de seguridad, quería intentar seguir con la solicitud POST y simplemente probarla; sin embargo, si trato de ejecutar esto a través de una solicitud POST (cambiar axios.get a axios.post), el valor del parámetro no se pasa a la API. . Aquí está mi solicitud de axios a continuación. ¿Cual podría ser el problema?
axios.post(window.location.origin + '/API/StateContacts', { params: { STATE_DD_INPUT: stateDD } }) .then(response => { this.stateContactsArray = response.data; }).catch(error => { console.log(error.response.data.error); });El segundo parámetro post Axios ya son los datos que está tratando de pasar. De
axios.post(window.location.origin + '/API/StateContacts', { params: { STATE_DD_INPUT: stateDD } })a
axios.post(window.location.origin + '/API/StateContacts', { STATE_DD_INPUT: stateDD })debería resolver tu problema
Tú comentaste:
Sin embargo, si hago esto y agrego un {} , funciona, pero no estoy seguro de por qué.
axios.post(window.location.origin + '/API/StateContacts', {}, { params: { STATE_DD_INPUT: stateDD } }) .then(response => { this.stateContactsArray = response.data; }).catch(error => { console.log(error.response.data.error); }); Esto se debe a que la firma de la función axios.post es:
axios.post(url[, data[, config]]) En lugar de pasar los data como el segundo argumento, está pasando el tercer argumento, que es la config . El objeto de config tiene la clave de parameters que agregará a su solicitud los siguientes parámetros de consulta:
http://localhost/API/StateContacts?STATE_DD_INPUT=xxx donde la cadena de consulta será STATE_DD_INPUT .
Dado que no conocemos su backend, asumimos que está utilizando un método para obtener la cadena de consulta de la solicitud y no el cuerpo de la solicitud. Los marcos como Laravel analizan la cadena de consulta y el cuerpo de lo que está buscando. P.ej
$request->get('STATE_DD_INPUT')Probablemente esté utilizando un marco que tiene dos métodos diferentes. Uno para obtener los parámetros de la consulta (p. ej., de la URL: https://localhost/API/StateContacts?STATE_DD_INPUT=xxxx) y otro para obtenerlos del cuerpo (p. ej., el que se envió en la solicitud del cuerpo; consulte estos documentos para obtener más información). más sobre el cuerpo POST). Entonces, tal vez en algún lugar de su código back-end tendrá
$request->body('STATE_DD_INPUT')Para poder obtener la solicitud de la cadena de consulta, debe tener algún método para hacerlo. p.ej
$request->query('STATE_DD_INPUT')¿Quieres pasar el parámetro en el encabezado?
axios.post(window.location.origin + '/API/StateContacts', { headers: { 'Content-Type': 'application/json', 'STATE_DD_INPUT': stateDD } }) .then((response) => { console.log(response.data) }) .catch((error) => { console.log(error); })