‫-: (Homme) Donc, dans cette conférence, vous
‫allez apprendre à enchaîner plusieurs fonctions middleware pour le même itinéraire.
‫Donc, jusqu'à présent, chaque fois que nous voulions
‫définir un middleware, nous ne passions qu'une seule fonction de middleware.
‫Ainsi, par exemple ici, pour gérer cette demande de publication,
‫nous n'avons transmis que cette fonction middleware qui
‫est notre gestionnaire createTour.
‫D'accord? Et c'est donc la
‫seule fonction qui sera appelée chaque fois que nous recevrons une demande de publication.
‫Droit? Mais disons maintenant que
‫nous voulons exécuter plusieurs fonctions middleware.
‫Maintenant, vous pourriez demander « Pourquoi voudrions-nous faire cela ? ".
‫Eh bien, nous pourrions, par exemple, exécuter un middleware avant
‫createTour ici pour vérifier réellement les données qui entrent
‫dans le corps.
‫Droit? Donc un peu similaire à ce que nous avions avant.
‫Nous avons donc déjà effectué cette vérification du middleware d'identification afin
‫de vérifier si l'ID est réellement valide et de le faire en
‫dehors des gestionnaires de routes réels afin
‫qu'ils ne soient concernés que par l'obtention, la mise à jour ou la
‫suppression d'une tournée.
‫Droit? Et donc ici, dans cet exemple spécifique
‫avec post, nous pourrions vouloir faire la même chose.
‫Donc, comme je l'ai dit, nous pourrions vouloir vérifier si la demande. buddy contient en fait
‫les données que nous voulons pour la tournée.
‫D'accord? Et alors faisons-le.
‫Et en fait, je veux que tu le fasses d'abord par toi-même.
‫C'est donc une sorte de défi que je veux que vous releviez
‫afin d'utiliser les concepts dont nous avons parlé
‫tant de fois à ce stade et de créer votre
‫propre fonction middleware.
‫Alors permettez-moi de l'écrire ici en tant que commentaire.
‫Je veux
‫donc que vous créiez une fonction middleware checkBody et là-dedans,
‫je veux que vous
‫vérifiiez si le corps contient la propriété name pour le nom de la
‫tournée et la propriété price.
‫D'accord? Et sinon, je veux que vous renvoyiez
‫un code d'état à quatre cents.
‫Sinon, renvoyez quatre cents, ce qui signifie une
‫mauvaise demande.
‫Donc en gros, une demande invalide du client, qui
‫dans ce cas essaie de créer un nouveau circuit sans nom
‫et sans propriété de prix.
‫D'accord! Et c'est en fait ça.
‫Et (rires) en fait non.
‫Je veux donc aussi que vous l'ajoutiez à la pile du gestionnaire de messages.
‫Essentiellement. D'accord?
‫Je veux donc que vous l'ajoutiez ici.
‫Et je vais en fait vous dire comment
‫faire cela parce que nous ne l'avons pas fait à ce stade.
‫Donc c'est très facile. Disons que notre fonction s'appelle middleware
‫et que vous devez donc simplement ajouter cette
‫fonction ici avant le gestionnaire createTour qui créera finalement
‫la visite. D'accord?
‫Ainsi, lorsque nous avons une demande de publication pour
‫cet itinéraire, il exécutera d'abord ce middleware,
‫puis le createTour.
‫D'accord? C'est ainsi que nous enchaînons deux middlewares différents.
‫Mais maintenant, je veux que vous alliez de l'avant et que vous créiez
‫ce middleware appelé en fait checkBody.
‫Alors mettez la vidéo en pause maintenant et essayez de la faire vous-même.
‫D'accord! J'espère donc que vous avez réussi à le
‫faire et que vous l'avez ensuite testé et que tout fonctionne.
‫Alors maintenant, permettez-moi d'aller de l'avant et de le mettre en œuvre à ma manière.
‫Nous avons donc cette erreur ici, mais ne vous en souciez pas.
‫C'est à cause de ce middleware qui n'est pas défini.
‫Et laissez-moi le faire ici juste après le middleware checkID.
‫Donc les exportations. checkBody.
‫Nous devons demander une réponse et ensuite.
‫Et donc c'est en fait assez simple.
‫Donc s'il n'y a pas de demande. corps. nom, et je
‫pense que c'est le nom, mais
‫allons-y rapidement et vérifions cela.
‫C'est donc ici que le tour est simple.
‫Ouais, et en effet il s'appelle 'nom'
‫et l'autre est 'prix'.
‫Donc, s'il n'y a pas de nom de corps de requête
‫ou pas de corps de requête. prix bien, dans
‫ce cas, nous allons, comme avant, revenir de
‫cette fonction et renvoyer une réponse.
‫Donc, le statut ici est rappelez-vous : quatre cents ajoutent puis un
‫« json » où le statut est échec.
‫C'est donc toujours à ce moment-là que nous avons un code à quatre cents.
‫Ajoutez ensuite le message
‫« Nom
‫ou prix manquant ».
‫D'accord? Le prix et le nom doivent donc être présents en même temps.
‫Donc, si le prix n'y est pas ou le nom n'y est
‫pas, nous envoyons déjà ce message d'erreur.
‫D'accord? Mais si tout est correct, alors nous
‫voulons passer au middleware suivant.
‫Et c'est ce que nous disons ici.
‫Et puis le prochain middleware sera bien sûr createTour.
‫Alors celui-ci.
‫Alors, allons-y et ajoutez-le ici.
‫Donc tourController. checkBody.
‫Très bien, maintenant l'erreur a disparu et nous devrions
‫pouvoir la tester maintenant. Alors fermons ceux qui
‫ne nous intéressent pas et créons une nouvelle tournée.
‫Donc en ce moment nous avons notre corps avec le nom, la durée et
‫la difficulté mais il n'y a pas de prix.
‫Nous devrions donc maintenant obtenir notre erreur. Droit?
‫Alors testons ça. Envoyer. Et en effet, nous
‫avons 'Nom ou prix manquant' avec notre quatre cents mauvaises requêtes.
‫D'accord? Et donc, analysons à nouveau ce qui s'est passé ici.
‫Notre demande a donc atteint cet itinéraire ici et
‫c'était une demande de publication. Et donc, il exécute ensuite cette
‫fonction middleware et à partir de cette fonction, nous envoyons ensuite cette réponse euh
‫en disant que, euh, eh bien, le nom ou le prix est manquant.
‫D'accord? Mais si maintenant ajoutez le prix... donc peu importe
‫le prix, envoyez-le, eh bien tout
‫fonctionne très bien et nous obtenons un 201 créé.
‫Alors que s'est-il passé cette fois-ci ? Eh bien, il a vérifié le corps et
‫cette condition n'était pas vraie et il
‫a donc appelé le prochain middleware dans la pile qui est createTour.
‫Alors il a créé une tournée et renvoyé le résultat
‫et comme ça, a terminé le cycle demande-réponse.
‫Droit? J'espère donc que c'était un, euh, joli petit défi
‫et nous utiliserons ce genre de
‫logique ici tout le temps où nous enchaînons plusieurs
‫types de gestionnaires ici pour le même itinéraire. Ainsi par exemple ici, nous pourrions vérifier si un certain utilisateur
‫est connecté ou s'il
‫a les privilèges, donc les droits d'accès, pour même écrire une nouvelle visite.
‫Ou vraiment toutes sortes de choses que nous voulons faire avant
‫que la tournée ne soit réellement créée.
‫D'accord? Et encore une fois, nous le faisons parce que nous voulons prendre
‫toute la logique qui n'est pas
‫vraiment concernée par la création de la nouvelle ressource en dehors de ce gestionnaire. De sorte que ce gestionnaire n'est vraiment concerné
‫que par le
‫travail qu'il est censé faire.