¿Cómo publicar parámetros de consulta con Axios?
Estoy intentando publicar en una API con algunos parámetros de consulta. Esto funciona en PostMan/Insomnia cuando intento pasar el correo y el nombre como parámetros de consulta:
http://localhost:8000/api/mails/users/sendVerificationMail?mail=lol%40lol.com&firstname=myFirstName
Sin embargo, cuando intento hacerlo con mi aplicación nativa de reacción, aparece un error 400 (Parámetros de consulta no válidos).
Este es el método de publicación:
.post(`/mails/users/sendVerificationMail`, {
mail,
firstname
})
.then(response => response.status)
.catch(err => console.warn(err));
(mi correo y mi nombre están registrados en console.log como sigue: [email protected]
y myFirstName
).
Así que no sé cómo pasar parámetros de consulta con Axios en mi solicitud (porque en este momento está pasando data: { mail: "[email protected]", firstname: "myFirstName" }
.
La firma de axios para la publicación es axios.post(url[, data[, config]])
. Entonces desea enviar el objeto params dentro del tercer argumento:
.post(`/mails/users/sendVerificationMail`, null, { params: {
mail,
firstname
}})
.then(response => response.status)
.catch(err => console.warn(err));
Esto PUBLICARÁ un cuerpo vacío con los dos parámetros de consulta:
POST http://localhost:8000/api/mails/users/sendVerificationMail?mail=lol%40lol.com&firstname=myFirstName
¡A partir de 2021, en lugar de nulo, tuve que agregar {} para que funcionara!
axios.post(
url,
{},
{
params: {
key,
checksum
}
}
)
.then(response => {
return success(response);
})
.catch(error => {
return fail(error);
});
En mi caso, la API respondió con un error CORS. En su lugar, formateé los parámetros de consulta en una cadena de consulta. Publicó datos con éxito y también evitó el problema de CORS.
var data = {};
const params = new URLSearchParams({
contact: this.ContactPerson,
phoneNumber: this.PhoneNumber,
email: this.Email
}).toString();
const url =
"https://test.com/api/UpdateProfile?" +
params;
axios
.post(url, data, {
headers: {
aaid: this.ID,
token: this.Token
}
})
.then(res => {
this.Info = JSON.parse(res.data);
})
.catch(err => {
console.log(err);
});
Puedes usar parámetros y cuerpo juntos en una solicitud con axios
sendAllData (data) {
return axios
.post(API_URL + "receiveData", JSON.stringify(data), {
headers: { "Content-Type": "application/json; charset=UTF-8" },
params: { mail: [email protected] }, //Add mail as a param
})
.then((response) => console.log("repsonse", response.status));
}