J'ai la fonction suivante qui provient de la pile mern.io.Utilisation de l'extraction, comment gérer correctement le rejet
export default function callApi(endpoint, method = 'get', body) {
return fetch(`${API_URL}/${endpoint}`, {
headers: { 'content-type': 'application/json' },
method,
body: JSON.stringify(body),
})
.then(response => response.json().then(json => ({ json, response })))
.then(({ json, response }) => {
if (!response.ok) {
return Promise.reject(json);
}
return json;
})
.then(
response => response,
error => error
);
}
J'appelle la fonction de la manière suivante
callApi('auth/register', 'post', {
username,
password,
}).then(function(res) {
// do stuff
});
La réponse sera soit un 201 ou un 422. Comment gérer la 422 la bonne façon? Un 422 se produirait si un nom d'utilisateur existe déjà.
Est-ce que je mets toute la logique dans la première puis, comme les suivantes:
callApi('auth/register', 'post', {
username,
password,
}).then(function(res) {
if (res.error) {
} else {
}
});
Il ne marche pas lancer une erreur et voici le code sur le repo: https://github.com/Hashnode/mern-starter/blob/master/client/util/apiCaller.js – Jose
Le problème h que le dernier 'then' dans' callApi' est qu'il transforme n'importe quelle promesse défaillante en une promesse résolue dont IMO est juste stupide. Il devrait être omis entièrement – Phil