‫Instructeur : Une autre
‫petite fonctionnalité intéressante que nous pouvons ajouter
‫à une API est de fournir une route d'alias à une
‫requête qui peut être très populaire,
‫elle peut donc être demandée tout le temps.
‫Et, par exemple, nous
‫pourrions vouloir fournir un itinéraire spécifiquement pour
‫les cinq meilleurs circuits bon marché.
‫Donc, si nous utilisions notre itinéraire habituel
‫ici avec les filtres et avec
‫toutes les fonctionnalités
‫que nous avons déjà, la demande ressemblerait un peu à ceci.
‫Alors, débarrassons-nous de tout cela.
‫Donc, les cinq meilleurs circuits et les moins chers.
‫Donc, cela signifie que nous avons une limite de
‫cinq et ensuite nous allons trier par notes et par prix.
‫Donc, triez puis la note moyenne,
‫et par ordre décroissant, donc moins les notes moyennes.
‫Et, s'ils ont la même moyenne, alors nous
‫voulons le prix le moins cher possible.
‫Et donc, on va trier aussi par prix.
‫Voyons rapidement les résultats.
‫Et, en effet, nous avons cinq visites ici.
‫Et, Postman fait à nouveau ce défilement.
‫Donc, nous avons des visites avec 4. 9, 4.
‫9, 4.
‫9 encore, 4. 8 et 4. 7.
‫Et donc, ce sont en fait nos cinq meilleurs circuits et les moins chers.
‫Si nous disions le moins cher et
‫le meilleur, eh bien, nous devrions peut-être d'abord trier par prix, car
‫certains d'entre eux ne sont pas vraiment bon marché.
‫Par exemple, celui-ci.
‫Mais, nous avons sélectionné, d'abord, la moyenne.
‫Et donc, nous avons d'abord trié par la moyenne la
‫plus élevée et, ensuite seulement en cas d'égalité, en gros, seulement ensuite,
‫par le prix.
‫Maintenant, disons qu'il s'agit d'une requête qui
‫se fait tout le temps et
‫que nous souhaitons proposer un
‫itinéraire simple et facile à mémoriser pour l'utilisateur.
‫Alors, allons à notre application et essayons de l'implémenter.
‫Et nous allons commencer par leurs itinéraires, alors faites le tour du routeur.
‫Et, nous devons ensuite créer un nouvel itinéraire.
‫Et, faisons-le ici, tout en haut.
‫Alors, routeur. route.
‫Et alors, comment allons-nous appeler cette route?
‫Eh bien, disons top-5 bon marché.
‫Donc, un nom assez simple, mais ça va marcher.
‫Et puis, en fait, nous
‫voulons uniquement obtenir des demandes pour cette route.
‫Et donc, maintenant il est temps de réfléchir.
‫Comment allons-nous implémenter cette fonctionnalité ?
‫Eh bien, en substance, ce
‫que nous voulons, c'est d'avoir toujours toutes les tournées comme ici.
‫Et donc, laissez-moi aller de l'avant et commencer par
‫copier et coller cela ici.
‫Donc, nous voulons vraiment toujours utiliser cette fonction ici car cela
‫n'a pas vraiment de
‫sens de réécrire toute la logique qui s'y trouve.
‫Mais, avant de pouvoir appeler cet ender de route, nous
‫voulons essentiellement préremplir certains des champs de la
‫chaîne de requête.
‫Ainsi, nous savons
‫déjà que notre chaîne de requête devrait ressembler à ceci.
‫Et, en fait, nous pouvons ajouter plus de choses ici.
‫Mais, en substance, notre chaîne
‫de requête doit ressembler à ceci.
‫Et donc, la solution va être d'exécuter un
‫middleware avant d'exécuter réellement ce gestionnaire getAllTours.
‫Et donc, cette fonction
‫middleware va ensuite manipuler l'objet de requête qui arrive.
‫Et donc, c'est encore un
‫autre très bel exemple d'utilisation de middleware, car
‫vous devez vraiment vous familiariser et vous habituer
‫à ce concept d'utilisation stratégique de middleware afin de
‫modifier l'objet de la demande selon nos besoins.
‫Alors, ajoutons-le ici alors.
‫Alors, tourController.
‫Et puis,
‫la fonction middleware que nous allons créer
‫dans une seconde, qui s'appellera aliasTopTours.
‫Alors, copions ce nom, passons au tourController et je
‫vais le mettre ici tout en haut.
‫Donc, les exportations. puis demande, réponse, et
‫quel est le troisième argument dont nous avons besoin
‫dans le
‫middleware, vous vous souvenez ?
‫Et, je sais que la section Express est déjà assez
‫éloignée à ce stade, mais j'espère que vous vous souviendrez que le
‫troisième argument ici doit être le suivant.
‫Donc, pour appeler le prochain middleware qui se
‫trouve dans la pile de middleware.
‫Donnez-lui une sauvegarde.
‫Et donc, cette erreur là devrait disparaître.
‫Et donc, faisons ce que nous avons dit que nous ferions.
‫Donc, essentiellement pour manipuler l'objet
‫de requête de sorte que lorsqu'il atteint
‫le gestionnaire getAllTours, il soit déjà différent.
‫Alors, commençons par le
‫faire, puis regardons vraiment ce qui se passe.
‫Alors, rappelez-vous, la limite sera fixée à cinq.
‫Et, rappelez-vous que tout est des chaînes ici et donc je
‫le règle également sur une chaîne.
‫Maintenant, qu'avons-nous eu d'autre ?
‫Donc, nous avons
‫ce genre, alors copions simplement ceci ici et disons req. mettre en doute. sorte.
‫Ça devrait être ça.
‫Et puis, nous pouvons également
‫spécifier certains champs afin que l'utilisateur n'obtienne pas tous
‫les champs que nous avons là-dedans.
‫Donc, disons
‫que nous voulons seulement le nom, le prix,
‫la moyenne des notes, le résumé et la difficulté.
‫Sauvegardez-le et maintenant
‫tout ce dont nous avons besoin est le suivant, sinon ce middleware sera
‫bloqué ici pour toujours et ne pourra pas continuer.
‫Voyons maintenant un peu
‫mieux ce qui va réellement se passer ici.
‫Donc, dès que quelqu'un atteint
‫le top 5 des itinéraires les moins chers, nous commencerons.
‫Le premier middleware qui va être exécuté est aliasTopTours.
‫Donc, la fonction que nous venons de créer.
‫Donc, ce que cela va faire,
‫c'est définir ces propriétés de
‫l'objet de requête sur ces valeurs que nous avons spécifiées ici.
‫Fondamentalement, préremplir des parties de
‫l'objet de requête avant d'atteindre le gestionnaire getAllTours.
‫Et donc, dès que nous arrivons à cette fonction, l'objet
‫de requête est déjà pré-rempli, même si l'utilisateur
‫n'a mis aucun de ces paramètres dans
‫la chaîne de requête.
‫Et donc, en substance, ce que nous
‫faisons ici
‫est de préremplir la chaîne de requête pour l'utilisateur afin
‫que l'utilisateur n'ait pas à le faire lui-même.
‫Et donc, allons-y maintenant et essayons ceci.
‫Alors, je copie ça.
‫Et, ici, ce ne sont pas des tournées.
‫C'est le top 5 des circuits.
‫Whoa, qu'est-ce qui se passe ici?
‫Pour une raison quelconque, il
‫ne trouve pas cet itinéraire, alors revenons en arrière.
‫Donc, top-5 des circuits.
‫Et donc, ici dans la route, ah, d'accord.
‫C'est ce qu'on appelle le top-5 bon
‫marché, donc mon erreur ici.
‫Alors, pas cher, envoyez-le
‫maintenant, et ce n'est toujours pas correct.
‫Ah ouais.
‫Bien sûr, je dois encore mettre les tournées ici, bien sûr.
‫Donc, nous sommes dans la ressource de visites et tout le routeur est
‫monté sur cet itinéraire de
‫visites, souvenez-vous de cela.
‫Et donc, c'est dans ces circuits, ce genre de mini application,
‫rappelez-vous ça, que j'ai
‫créé ce top 5 des itinéraires pas chers.
‫Alors, espérons que cela fonctionne maintenant.
‫Et, en effet, il le fait.
‫Donc, ça a marché, c'est fantastique.
‫Maintenant, bien sûr, nous pourrions faire beaucoup plus
‫de routes d'alias ici, mais ce n'est pas vraiment nécessaire.
‫Je voulais juste vous montrer
‫le concept, vous montrer que cela peut être une
‫fonctionnalité intéressante à ajouter à n'importe quelle API
‫et je voulais aussi, encore une fois, vous montrer la puissance des middlewares.
‫Donc, nous parlons ici de Mongoose, mais il est
‫quand même très important de continuer
‫à se familiariser avec les concepts Express dont nous avons parlé précédemment.
‫Quoi qu'il en soit, nous en avons maintenant terminé avec nos fonctionnalités API.
‫Dans la vidéo suivante, nous allons simplement refactoriser
‫rapidement tout cela pour rendre l'ensemble
‫du code un peu plus modulaire et, bien sûr, meilleur.