如何用axios发布查询参数?

问题描述 投票:0回答:4

我正在尝试在 API 上发布一些查询参数。 当我尝试通过邮件和名字作为查询参数传递时,这在 PostMan / Insomnia 上起作用:

 http://localhost:8000/api/mails/users/sendVerificationMail?mail=lol%40lol.com&firstname=myFirstName

但是,当我尝试使用我的 React Native 应用程序执行此操作时,我收到了 400 错误(无效的查询参数)。

这是post方法:

.post(`/mails/users/sendVerificationMail`, {
  mail,
  firstname
})
.then(response => response.status)
.catch(err => console.warn(err));

(我的邮件和名字在控制台中记录如下:

[email protected]
myFirstName
)。

所以我不知道如何在我的请求中使用 Axios 传递查询参数(因为现在,它正在传递

data: { mail: "[email protected]", firstname: "myFirstName" }

javascript mysql post axios
4个回答
406
投票

axios 帖子签名是

axios.post(url[, data[, config]])
。所以你想在第三个参数中发送 params 对象:

.post(`/mails/users/sendVerificationMail`, null, { params: {
  mail,
  firstname
}})
.then(response => response.status)
.catch(err => console.warn(err));

这将发布一个带有两个查询参数的空正文:

发布 http://localhost:8000/api/mails/users/sendVerificationMail?mail=lol%40lol.com&firstname=myFirstName


34
投票

从 2021 年开始,我必须添加 {} 才能使其正常工作!

axios.post(
        url,
        {},
        {
          params: {
            key,
            checksum
          }
        }
      )
      .then(response => {
        return success(response);
      })
      .catch(error => {
        return fail(error);
      });

13
投票

在我的例子中,API 响应了 CORS 错误。相反,我将查询参数格式化为查询字符串。成功发布数据,也避免了 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);
          });

2
投票

您可以在 axios 请求中同时使用 params 和 body

  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)); 
  }
© www.soinside.com 2019 - 2024. All rights reserved.