我正在尝试在 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" }
。
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
从 2021 年开始,我必须添加 {} 才能使其正常工作!
axios.post(
url,
{},
{
params: {
key,
checksum
}
}
)
.then(response => {
return success(response);
})
.catch(error => {
return fail(error);
});
在我的例子中,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);
});
您可以在 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));
}