如何使用axios发布查询参数?

ttcibm8c  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(405)

我正在尝试发布一个带有一些查询参数的api。当我试图通过传递mail和firstname作为查询参数时,这正在处理postman/失眠:

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

但是,当我尝试用我的react原生应用程序执行此操作时,出现了一个400错误(无效的查询参数)。
这是post方法:

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

(我的邮件和名字记录如下: lol@lol.com 以及 myFirstName ).
所以我不知道如何在请求中用axios传递查询参数(因为现在,它正在传递) data: { mail: "lol@lol.com", firstname: "myFirstName" } .

wztqucjr

wztqucjr1#

在我的例子中,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);
          });
db2dz4w8

db2dz4w82#

邮政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/mail/users/sendverificationmail?mail=lol%40lol.com&firstname=myfirstname

相关问题