J'ai une application react/redux et j'essaie de faire une simple requête GET à un serveur:
fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
}).then((response) => {
console.log(response.body); // null
return dispatch({
type: "GET_CALL",
response: response
});
})
.catch(error => { console.log('requete échouée', error); });
Le problème est que le corps de la réponse est vide dans la fonction .then()
et je ne sais pas pourquoi. J'ai vérifié des exemples en ligne et il semble que mon code devrait fonctionner, donc je manque évidemment quelque chose ici. La chose, c'est que si je vérifie l'onglet réseau dans les outils de développement de Chrome, la requête est faite et je reçois les données que je recherche.
Est-ce que quelqu'un peut éclairer ma lanterne sur ce point?
EDIT:
J'ai essayé de convertir la réponse.
en utilisant .text()
:
fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
})
.then(response => response.text())
.then((response) => {
console.log(response); // retourne une chaîne vide
return dispatch({
type: "GET_CALL",
response: response
});
})
.catch(error => { console.log('requete échouée', error); });
et avec .json()
:
fetch('http://example.com/api/node', {
mode: "no-cors",
method: "GET",
headers: {
"Accept": "application/json"
}
})
.then(response => response.json())
.then((response) => {
console.log(response.body);
return dispatch({
type: "GET_CALL",
response: response.body
});
})
.catch(error => { console.log('requete échouée', error); }); // Erreur de syntaxe: fin inattendue de l'entrée
En regardant dans les outils de développement de Chrome:
0 votes
Je n'arrivais pas à faire fonctionner
fetch
donc j'ai commencé à utiliser le redux-api-middleware. Lorsque vous faites la requête, vous devez convertir la réponse en json de la même manière que les gens ici l'ont suggéré: