⊗jsrxPmSDCl 44 of 57 menu

Client pour l'application dans Redux

Lors des leçons précédentes, nous avons presque terminé la partie serveur de notre application, nous la compléterons un peu si nécessaire dans les prochaines leçons. Maintenant, nous devons créer un client pour l'application, qui enverra des requêtes HTTP au serveur.

Ouvrons notre application avec les produits et dans le dossier api créons le fichier client.js. Pour commencer, nous écrirons la fonction client elle-même, qui fonctionnera à la fois pour les requêtes GET et POST. Elle recevra en paramètres le chemin, le type et le corps de la requête (dans le cas POST), si il y en a un :

export async function client(url, method, body = {}) {}

Ensuite, nous devons former l'objet options, dans lequel nous transmettrons diverses informations pour la requête. Ce sera le type de requête et les en-têtes :

export async function client(url, method, body = {}) { const options = { method: method, headers: { 'Content-Type': 'application/json', }, } }

La propriété body est optionnelle pour nous, nous devons la transmettre si nous avons une requête POST. Pour cela, à l'intérieur de client après le code pour l'objet options, ajoutons-la à options avec le corps de la requête au format JSON, si la méthode POST est sélectionnée :

if (method === 'POST') { options.body = JSON.stringify(body) }

Ensuite, plus bas dans le code de client, organisons un bloc try, dans la première ligne duquel nous obtiendrons la réponse du serveur en utilisant fetch. En cas d'échec, nous retournerons traditionnellement une promesse avec une erreur :

let data try { const response = await window.fetch(url, options) } catch (err) { return Promise.reject(err.message ? err.message : data) }

Maintenant, complétons le code dans le bloc try. Après avoir obtenu la response, nous devons la traiter. Extrayons-en les données en JSON et si le statut de la réponse nous indique que tout est en ordre, alors retournons un objet avec les données et les informations : statut, en-têtes et adresse. Si le statut n'est pas 'ok', alors levons une exception avec le texte du statut :

try { const response = await window.fetch(url, options) data = await response.json() if (response.ok) { return { status: response.status, headers: response.headers, url: response.url, data, } } throw new Error(response.statusText) }

Le code pour la fonction client est prêt, il reste seulement à écrire comment nos méthodes GET et POST fonctionneront lors de l'appel. Écrivons le code pour elles après la fonction client. La méthode client.get acceptera comme paramètre le chemin et appellera la fonction client, en lui passant ce chemin et le type de requête GET :

client.get = (url) => client(url, 'GET')

Et client.post doit transmettre à client le chemin, le type de requête POST et le corps de la requête :

client.post = (url, body) => client(url, 'POST', body)

C'est tout, notre petit client est prêt à travailler avec le serveur.

Ouvrez votre application avec les étudiants, créez-y dans le dossier api le fichier client.js. Après avoir consulté les matériaux de la leçon, écrivez (copiez) le code de la fonction client et de ses deux méthodes client.get et client.post.

cshuptuzlms