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

我试图在一个 API 上发布一些查询参数。 当我试图通过传递邮件和名字作为查询参数时,这是在 PostMan/Insomnia 上工作的:

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

但是,当我试图用我的本机应用程序进行此操作时,出现了400个错误(无效查询参数)。

这是邮寄方式:

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

(我的邮件和名字都记录在 console. log 中,如下所示: lol@lol.commyFirstName)。

因此,我不知道如何在请求中使用 Axios 传递查询参数(因为现在它正在传递 data: { mail: "lol@lol.com", firstname: "myFirstName" })。

324915 次浏览

所以你想在第三个参数中发送 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

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

从2021年起,我不得不添加{}以使它工作!

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