javascript - Hur skickar man frågeparametrar med Axios?
Jag försöker posta på ett API med några frågeparametrar. Detta fungerar i PostMan/Insomnia när jag försöker skicka mail och förnamn som frågeparametrar:
http://localhost:8000/api/mails/users/sendVerificationMail?mail=lol%40lol.com&firstname=myFirstName
Men när jag försöker göra det med min React Native-app fick jag ett 400-fel (Ogiltiga frågeparametrar).
Detta är postmetoden :
.post(`/mails/users/sendVerificationMail`, {
mail,
firstname
})
.then(response => response.status)
.catch(err => console.warn(err));
(min e-post och förnamn loggas i konsolen som följer: [email och myFirstName).
Så jag vet inte hur man skickar Query-parametrar med Axios i min förfrågan (för just nu skickar den data: { mail: "[email ", firstname: "myFirstName" }.
Svar #1
axios-signaturen för post är axios.post(url[, data[, config]]). Så du vill skicka params-objektet inom det tredje argumentet:
.post(`/mails/users/sendVerificationMail`, null, { params: {
mail,
firstname
}})
.then(response => response.status)
.catch(err => console.warn(err));
Detta kommer att POSTA en tom kropp med de två frågeparametrarna:
POST http://localhost:8000/api/mails/users/sendVerificationMail?mail=lol%40lol.com&firstname=myFirstName
Svar #2
Från och med 2021 istället för null var jag tvungen att lägga till {} för att få det att fungera!
axios.post(
url,
{},
{
params: {
key,
checksum
}
}
)
.then(response => {
return success(response);
})
.catch(error => {
return fail(error);
});
Svar #3
I mitt fall svarade API:et med ett CORS-fel. Jag formaterade istället frågeparametrarna till en frågesträng. Det postade data framgångsrikt och undvek också CORS-problemet.
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);
});
