¿Cómo publicar parámetros de consulta con Axios?

Resuelto GuillaumeRZ asked hace 6 años • 4 respuestas

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" }.

GuillaumeRZ avatar Nov 27 '18 20:11 GuillaumeRZ
Aceptado

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

enapupe avatar Nov 27 '2018 13:11 enapupe

¡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);
      });
Vasilis Mpletsos avatar Jan 22 '2021 16:01 Vasilis Mpletsos

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);
          });
Jay 鲍昱彤 avatar Jul 13 '2020 23:07 Jay 鲍昱彤

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)); 
  }
Syamkumar S avatar Dec 14 '2022 05:12 Syamkumar S