J'ai écrit une requête axios POST recommandée dans la documentation du paquet npm, telle que
var data = {
'key1': 'val1',
'key2': 'val2'
}
axios.post(Helper.getUserAPI(), data)
.then((response) => {
dispatch({type: FOUND_USER, data: response.data[0]})
})
.catch((error) => {
dispatch({type: ERROR_FINDING_USER})
})
Et cela fonctionne, mais maintenant j'ai modifié mon API backend pour accepter les en-têtes
Type de contenu: 'application/json'
Autorisation: 'JWT fefege ...'
Maintenant, cette requête marche bien sur POSTMAN, mais lors de la rédaction d'un appel axios, je suis ce lien et n'arrive pas à le faire fonctionner.
Je reçois continuellement 400 BAD Request error
Voici ma demande modifiée
axios.post(Helper.getUserAPI(), {
headers: {
'Content-Type': 'application/json',
'Authorization': 'JWT fefege...'
},
data
})
.then((response) => {
dispatch({type: FOUND_USER, data: response.data[0]})
})
.catch((error) => {
dispatch({type: ERROR_FINDING_USER})
})
Toute aide est grandement appréciée
Merci d'avance.
Lorsque vous utilisez axios, pour passer des en-têtes personnalisés, fournissez un objet contenant les en-têtes en dernier argument.
Modifiez votre demande axios comme
var headers = {
'Content-Type': 'application/json',
'Authorization': 'JWT fefege...'
}
axios.post(Helper.getUserAPI(), data, {headers: headers})
.then((response) => {
dispatch({type: FOUND_USER, data: response.data[0]})
})
.catch((error) => {
dispatch({type: ERROR_FINDING_USER})
})
Voici un exemple complet d'une demande axios.post avec des en-têtes personnalisés
var postData = {
email: "[email protected]",
password: "password"
};
let axiosConfig = {
headers: {
'Content-Type': 'application/json;charset=UTF-8',
"Access-Control-Allow-Origin": "*",
}
};
axios.post('http://<Host>:<port>/<path>', postData, axiosConfig)
.then((res) => {
console.log("RESPONSE RECEIVED: ", res);
})
.catch((err) => {
console.log("AXIOS ERROR: ", err);
})
La réponse de Shubham n'a pas fonctionné pour moi.
Lorsque vous utilisez la bibliothèque axios et que vous passez des en-têtes personnalisés, vous devez créer des en-têtes en tant qu’objet avec le nom de clé "en-têtes". La clé d'en-tête doit contenir un objet, ici le type de contenu et l'autorisation.
L'exemple ci-dessous fonctionne bien.
var headers = {
'Content-Type': 'application/json',
'Authorization': 'JWT fefege...'
}
axios.post(Helper.getUserAPI(), data, {"headers" : headers})
.then((response) => {
dispatch({type: FOUND_USER, data: response.data[0]})
})
.catch((error) => {
dispatch({type: ERROR_FINDING_USER})
})
Ou, si vous utilisez une propriété du prototype de vuejs qui ne peut pas être lue lors de la création, vous pouvez également définir des en-têtes et écrire i.e.
storePropertyMaxSpeed(){
axios.post('api/property', {
"property_name" : 'max_speed',
"property_amount" : this.newPropertyMaxSpeed
},
{headers : {'Content-Type': 'application/json',
'Authorization': 'Bearer ' + this.$gate.token()}})
.then(() => { //this below peace of code isn't important
Event.$emit('dbPropertyChanged');
$('#addPropertyMaxSpeedModal').modal('hide');
Swal.fire({
position: 'center',
type: 'success',
title: 'Nova brzina unešena u bazu',
showConfirmButton: false,
timer: 1500
})
})
.catch(() => {
Swal.fire("Neuspješno!", "Nešto je pošlo do đavola", "warning");
})
}
},
Json doit être mis en forme avec des guillemets
Comme:
headers: {
"Content-Type": "application/Jason",
"Authorization": "JWT fefege..."
}
Pas seulement:
headers: {
'Content-Type': 'application/json',
'Authorization': 'JWT fefege...'
}