‫Instructeur : Très bien, dans
‫cette conférence, nous allons parler de ce
‫qu'on appelle les routes imbriquées, ce qu'elles sont,
‫pourquoi nous en avons besoin
‫et comment nous pouvons réellement les implémenter dans Express.
‫Réfléchissons une seconde à la manière dont,
‫dans la pratique, nous voulons réellement créer une nouvelle revue.
‫Jusqu'à présent, lors de la création de nouveaux avis,
‫nous transmettions toujours manuellement l'ID de la
‫tournée et l'ID utilisateur dans le corps de la
‫demande, puis nous créions l'avis à partir de là, à droite.
‫Ce n'est pas grave pendant le développement, mais bien sûr, ce
‫n'est pas ainsi qu'une revue sera créée
‫dans le monde réel.
‫Ainsi, dans le monde réel, l'ID
‫utilisateur devrait idéalement provenir de l'utilisateur actuellement connecté et
‫un ID de tournée devrait provenir de la tournée actuelle.
‫Cela devrait idéalement être encodé
‫directement dans la route, donc dans l'URL.
‫Lorsque vous soumettez une demande de publication pour un
‫nouvel avis, nous souhaitons la soumettre à une URL comme celle-ci.
‫Écrivons cela ici juste comme un commentaire.
‫Idéalement, nous voudrons faire une
‫demande de publication, de tournée, et l'ID de la tournée, cela
‫n'a pas vraiment d'importance ici, puis des critiques.
‫D'accord, alors maintenant, juste comme ça, nous
‫avons l'ID de la tournée directement dans
‫l'URL et l'ID utilisateur viendra alors également
‫de l'utilisateur actuellement connecté.
‫Ce que nous voyons ici est maintenant une route dite imbriquée.
‫Ils ont beaucoup de sens
‫lorsqu'il existe une relation parent-enfant claire entre les ressources.
‫C'est clairement le cas ici, n'est-ce pas.
‫Avis est clairement un enfant de la tournée.
‫Cet itinéraire imbriqué
‫signifie essentiellement accéder à la ressource
‫d'avis sur la ressource de la visite, d'accord.
‫De la même manière, nous voudrons
‫également accéder aux critiques d'une certaine tournée de la même manière.
‫Disons ensuite une demande d'obtention, et encore une
‫fois pour l'ID de tournée et les critiques de barres obliques.
‫Cela nous obtiendrait alors
‫idéalement toutes les critiques pour cette tournée.
‫On pourrait aller encore plus
‫loin et préciser également l'ID de l'avis.
‫Encore une fois, juste une chaîne aléatoire ici, mais
‫vous comprenez le point.
‫Dans ce cas, nous obtiendrions un
‫examen avec l'ID de ceci
‫ici sur la tournée avec cet ID.
‫C'est à cela que servent les routes imbriquées.
‫C'est un moyen beaucoup plus facile de lire
‫et de comprendre comment l'API fonctionne pour nos utilisateurs d'API.
‫C'est beaucoup plus facile que de jouer
‫avec les chaînes de requête et tout ce genre de choses.
‫En outre, cela montre vraiment comment
‫il existe cette relation claire entre ces ressources, encore
‫une fois, les critiques et les visites.
‫D'accord, mais assez parlé.
‫Implémentons maintenant cela en commençant
‫par la route post.
‫Maintenant, puisque l'itinéraire commence en fait par des tournées, il sera
‫bien sûr redirigé vers notre routeur de tournée.
‫Nous allons devoir implémenter cette fonctionnalité au moins pour l'instant,
‫dans le routeur de tournée, même
‫si cela semble un peu contre-intuitif puisqu'il
‫s'agit en fait de critiques.
‫Mais encore une fois, pour l'instant, implémentons-le comme ça.
‫Nous arrivons à notre routeur utilisateur et d'abord, puisque
‫nous allons réellement utiliser
‫des critiques ici,
‫nous devons importer le contrôleur de revue.
‫Contrôleur requis.
‫J'aurais peut-être dû copier la ligne d'avant.
‫Contrôleurs et contrôleur d'examen.
‫Très bien, maintenant ici tout en bas, et obtenons en
‫fait notre code pour
‫cet exemple à partir d'ici juste
‫comme référence.
‫Pour que nous puissions maintenant le mettre en œuvre.
‫La route que nous allons implémenter
‫ici est l'ID de barre oblique, puis les revues.
‫Cette partie de la visite ici, comme vous le
‫savez déjà, est l'endroit où nous avons
‫monté ce routeur et donc, nous n'avons pas à la répéter ici.
‫Mais ensuite, nous avons l'identifiant de la tournée, puis les critiques slash.
‫Afin de rendre cela très clair,
‫appelons-le en fait ID de tournée, car
‫nous avons maintenant
‫affaire à différentes ressources ici.
‫Il est donc un peu plus clair de l'appeler vraiment comme il est.
‫Nous voulons maintenant implémenter la révision de création.
‫Protection par point du contrôleur d'authentification.
‫Nous voulons également restreindre l'accès uniquement aux
‫utilisateurs, et bien sûr, notre contrôleur de révision ne crée
‫pas de révision, d'accord.
‫Encore une fois, il est un peu étrange
‫et contre-intuitif d'appeler le contrôleur de révision ici
‫dans le parcours utilisateur.
‫Eh bien en fait, il ne devrait pas être dans la route de l'utilisateur.
‫Pour une raison quelconque, j'ai
‫ouvert les itinéraires utilisateur et non les itinéraires de visite, donc désolé pour celui-ci.
‫Coupons-le d'ici, arrivons à nos itinéraires de tournée et
‫faisons-le ici en bas.
‫Bien sûr, nous devons également obtenir le contrôleur d'examen.
‫Alors maintenant, nous devrions être prêts à partir.
‫C'était un bug stupide.
‫Mais de toute façon, ce que je
‫disais, c'est que cela n'a pas beaucoup de sens
‫d'appeler le contrôleur de révision dans l'itinéraire de la tournée, mais
‫encore une fois, pour l'instant, nous devons le faire
‫comme ça parce que l'itinéraire commence par la tournée.
‫C'est ce routeur qui sera activé.
‫Dans la prochaine vidéo, nous allons
‫corriger cela, mais pour l'instant, nous voulons
‫juste le faire fonctionner
‫et nous familiariser avec tout ce concept de routes imbriquées.
‫Quoi qu'il en soit, nous avons maintenant notre identifiant de tournée directement dans
‫l'itinéraire, mais bien sûr,
‫nous devons informer le contrôleur qu'il doit maintenant utiliser cet identifiant
‫de tournée ainsi que l'identifiant de l'utilisateur actuellement connecté.
‫Nous devons maintenant aller de
‫l'avant et mettre à jour notre contrôleur de révision ici
‫même lors de la création de la révision.
‫Ce que nous allons faire est ceci.
‫Nous dirons, s'il n'y a pas de requête dot body dot tour, donc
‫fondamentalement, si nous n'avons pas spécifié l'ID de
‫la tournée et le corps,
‫alors nous voulons définir cela comme celui
‫provenant de l'URL.
‫Req dot body dot tour est égal à la
‫demande, et rappelez-vous maintenant comment ce
‫paramètre d'URL est sur la demande dot params et bien sûr,
‫le nom du paramètre lui-même, donc l'ID de la tournée.
‫C'est la première partie et la
‫deuxième, nous devons également faire la même chose avec l'utilisateur.
‫S'il n'y a pas d'utilisateur de
‫point de demande ou, en fait, d'utilisateur de point de corps
‫de demande, alors l'utilisateur de point de corps
‫de demande doit être ID de point d'utilisateur de point de demande.
‫Et encore une fois, nous obtenons l'utilisateur de
‫point de demande du middleware de protection, et c'est en fait tout.
‫Mettons juste un commentaire ici, routes imbriquées.
‫Avec cela, nous faisons
‫en sorte que l'utilisateur puisse toujours spécifier manuellement
‫la visite et l'ID utilisateur.
‫Ce que nous faisons
‫ici, c'est simplement les définir quand ils ne sont pas là
‫ou quand ils ne sont pas spécifiés dans le corps de la requête.
‫Cela devrait nous suffire pour tester cela maintenant.
‫Très bien, alors jetons un coup
‫d'œil aux utilisateurs que nous avons à ce stade.
‫Nous avons ces deux utilisateurs
‫réguliers, nous avons l'utilisateur test et nous avons Jonas ici,
‫mais nous avons oublié son mot de passe.
‫Allons de l'avant et supprimons
‫cet utilisateur et créons-en un nouveau.
‫Très bien, donc dans Compass, les utilisateurs, et
‫c'est celui-ci.
‫Recréons cet utilisateur en gros.
‫Tout ce dont nous avons vraiment besoin, ce sont ces deux données.
‫En fait, c'est s'inscrire.
‫Le même nom, le même
‫email et le même mot de passe aussi.
‫À ce stade, nous sommes déjà connectés
‫en tant qu'utilisateur, appelé Jonas, gardons cela à l'esprit.
‫Ensuite, nous devons choisir sur quelle tournée
‫nous voulons réellement créer l'avis.
‫Faisons-le à nouveau ici à The Forest
‫Hiker afin que nous obtenions plusieurs critiques sur la même tournée.
‫Nous allons
‫maintenant accéder à cette route imbriquée que nous
‫venons de créer.
‫Nous avons les visites.
‫Maintenant, nous devons obtenir l'identifiant de la
‫tournée, et encore une fois,
‫nous allons
‫utiliser celui-ci pour The Forest Hiker, puis réduire les critiques,
‫puis nous souvenir d'un message.
‫Ensuite, nous devons également spécifier l'autorisation, donc le
‫jeton au porteur, et maintenant dans le corps, tout ce dont nous
‫avons vraiment besoin est
‫de spécifier la note et l'avis.
‫La note est
‫de cinq, puis du texte ici.
‫Cela devrait donc déjà être suffisant pour essayer cela.
‫Envoyons-le.
‫Maintenant, nous n'avons pas la permission
‫d'effectuer cette action, pour une raison quelconque, donc c'est bizarre.
‫Nous nous sommes inscrits en tant que Jonas, et c'est
‫en fait juste un utilisateur normal comme
‫il est censé l'être.
‫Jetons un coup d'œil à notre routeur.
‫Ici, oh d'accord, c'est l'utilisateur, pas les utilisateurs.
‫Un petit bug comme celui-ci peut, comme vous le
‫voyez, faire planter tout cet itinéraire, alors essayons à nouveau maintenant.
‫Et maintenant, nous obtenons en fait l'examen final
‫avec à la fois la visite et l'utilisateur correctement définis.
‫Du moins je l'espère.
‫L'identifiant de la tournée, voyez-vous, se termine ici en 951, et
‫c'est donc exactement la même chose ici.
‫L'utilisateur est ce 1f3, et donc en effet, c'est
‫exactement le même.
‫Très bien, et maintenant nous devrions être
‫en mesure de le confirmer, et donc cette visite
‫guidée ici est en fait déjà celle sur laquelle nous
‫avons créé la nouvelle critique.
‫Jetons un coup d'œil, et en effet, nous
‫obtenons maintenant deux critiques.
‫Celui-ci est celui que nous venons de créer.
‫C'est sur la bonne tournée et bien
‫sûr, aussi sur le bon utilisateur avec le nom de Jonas.
‫Génial, c'est vraiment cool.
‫Allons de l'avant et gardons ceci.
‫Je vais à nouveau créer un nouveau dossier ici.
‫Je vais appeler ça des critiques de tournées.
‫Maintenant ici, créons,
‫créons une nouvelle critique en tournée.
‫Cela devrait en fait être à l'extérieur et juste comme ça.
‫Mettons en fait celui-ci ici.
‫Cela ne fonctionne pas vraiment comme il le devrait pour une raison quelconque.
‫Et c'est reparti.
‫Très bien, cela a très bien fonctionné,
‫mais comme je l'ai déjà mentionné, la mise en
‫œuvre est un peu déroutante à ce stade.
‫Et encore une fois, c'est parce que nous avons techniquement défini un
‫itinéraire de révision dans le routeur de tournée.
‫C'est un peu déroutant, et donc dans la prochaine
‫vidéo, nous allons corriger cela.