‫Jonas : Bienvenue à nouveau, le moment est
‫donc venu de commencer enfin à créer notre API.
‫Donc, cette conférence va vraiment être la première
‫étape d'un long voyage de construction de ce projet de cours principal.
‫Et permettez-moi de commencer par vous montrer à
‫nouveau le projet dont nous parlons.
‫C'est donc le projet Natours.
‫Il s'agit essentiellement d'une application
‫où l'on peut voir des visites et aussi les réserver.
‫Nous pouvons créer des comptes d'utilisateurs, nous connecter et
‫vraiment faire toutes sortes de choses différentes.
‫Ainsi, par exemple, nous pouvons jeter un œil à la visite ici.
‫Il a tous ces détails, cette carte,
‫il a des avis d'autres utilisateurs qui utilisent la plate-forme, et nous pouvons
‫même réserver la visite alors.
‫Nous aurions à nous connecter avant de pouvoir réserver et
‫je ne vais pas
‫le faire maintenant car c'est juste une démo très
‫simple ici, donc je voulais juste vous montrer cette
‫interface graphique, en gros, du projet que nous construisons .
‫Maintenant, cette partie que vous voyez ici
‫est en fait la partie que nous allons
‫construire d'ici la fin
‫du cours, car cette première partie
‫du cours consiste à créer une API en utilisant exactement les
‫mêmes données que vous voyez ici sur cette dynamique site Internet.
‫Encore une fois, nous
‫commençons par créer l'API, puis le site Web rendu dynamiquement, et j'ai
‫choisi de le faire
‫comme ça parce que de cette
‫façon, nous n'avons pas à mélanger tout ce contenu
‫différent, donc pour apprendre Express et Mongodb et Mongoose, je trouve qu'il est
‫beaucoup plus facile de travailler avec des données et
‫de ne pas se soucier des éléments graphiques,
‫même si c'est peut-être un peu plus excitant
‫car vous pouvez voir les vrais résultats dans
‫cette belle interface.
‫Mais pour apprendre, il vaut mieux recommencer, il suffit de
‫traiter les données elles-mêmes et de
‫se soucier de les rendre belles plus tard.
‫D'accord, laissez-moi vous montrer également l'API.
‫Et pour cela, bien sûr, j'utilise Postman.
‫Créez un nouvel onglet ici.
‫Et donc l'API finale à laquelle nous avons accédé
‫à l'API slash, slash version 1, et ensuite, par exemple,
‫nous pouvons jeter un œil aux visites.
‫Nous utilisons donc la
‫requête get, puis nous obtenons toutes ces différentes visites.
‫Bon, encore une fois, exactement les mêmes
‫visites que vous avez vues sur
‫l'interface graphique, donc sur le site Web rendu auparavant.
‫D'accord, nous pouvons alors également aller de l'avant, prendre l'identifiant et demander
‫uniquement cet identifiant, donc lors de cette tournée pour cet identifiant, et vous voyez
‫que maintenant nous n'avons que celui-ci ici avec encore
‫plus de données qu'avant.
‫Nous avons donc des emplacements de
‫départ ici, nous avons des guides touristiques qui à leur tour ont d'autres
‫identifiants, nous avons des emplacements, nous avons des critiques, donc tout
‫cela que nous avons dans une tournée.
‫Donc vous voyez, ce sont des trucs vraiment
‫avancés et donc nous avons en fait plus que de simples tournées.
‫Nous avons des utilisateurs mais nous ne pourrons pas y
‫accéder car nous devons être authentifiés.
‫Donc, vous n'êtes pas connecté et donc maintenant, nous aurions
‫besoin de nous connecter à notre application.
‫Maintenant, à ce stade, je vais arrêter
‫de vous montrer toutes les fonctionnalités car nous
‫allons construire cela
‫tout au long du cours, juste pour vous montrer qu'il se passe
‫vraiment beaucoup de choses ici et qu'il y a donc beaucoup de
‫matériel et de choses à apprendre devant vous,
‫alors j'espère que cela vous enthousiasme
‫et que vous voulez faire le premier pas avec moi dès maintenant.
‫Revenons donc en arrière et mettons en œuvre l'itinéraire des visites ou
‫commençons à le mettre en œuvre, au moins.
‫D'accord, donc ce morceau de code ici, nous n'en avons plus besoin,
‫et je ne le supprime pas, je le commente simplement.
‫Encore une fois, nous utilisons app. get car
‫dans cette conférence, nous
‫allons commencer par gérer
‫simplement les requêtes get et l'URL sera l'API slash et les visites.
‫Je n'utilise donc pas la
‫v1, eh bien, je pourrais utiliser la v1 tout de
‫suite, c'est donc une bonne pratique de spécifier la version de l'API.
‫D'accord, donc au cas où vous voudriez
‫apporter des modifications à votre
‫API, vous pouvez le faire mais simplement ensuite sur la
‫v2 sans casser tous ceux qui utilisent encore la v1.
‫D'accord, donc en gros, vous pouvez créer une
‫nouvelle version de votre API,
‫mais tous les utilisateurs peuvent alors toujours l'utiliser.
‫Si nous le faisions
‫juste comme ça et que vous apportiez des modifications aux visites
‫guidées de l'API, alors les utilisateurs
‫qui ont commencé à l'utiliser avant que vous ne fassiez le changement rencontreraient des problèmes.
‫D'accord, nous devons donc toujours spécifier la version de l'API.
‫Nous pourrions également le faire
‫dans le sous-domaine, mais il est plus simple de l'inclure simplement dans l'URL.
‫D'accord, et bien sûr, notre gestionnaire de route.
‫C'est donc ainsi que nous appelons habituellement cette fonction.
‫Nous l'appelons le gestionnaire de route.
‫D'accord, juste pour vous familiariser avec ces termes Express.
‫Maintenant, que voulons-nous faire lorsque quelqu'un emprunte cette route ?
‫Eh bien, nous voulons simplement renvoyer toutes les visites.
‫C'est donc similaire à ce que nous venons
‫d'apprendre dans la dernière conférence, n'est-ce pas.
‫Nous avons cette URL ou ce point de terminaison, des
‫visites slash, et cela renverra généralement toutes les données
‫pour cette ressource, n'est-ce pas.
‫Donc, les visites sont également la ressource maintenant, et je
‫commence par les
‫visites ici parce que c'est, je dirais, la
‫plus évidente puisque nous construisons un site Web ou une application
‫Web pour vendre des visites, n'est-ce pas.
‫Maintenant, où obtenons-nous réellement
‫ces visites que nous voulons renvoyer au client ?
‫Eh bien, c'est ici dans
‫le dossier dev-data, puis data, puis tours-simple.
‫C'est donc ce fichier JSON, et il est très
‫similaire à celui que nous avions pour
‫la ferme de notes, donc encore une fois, c'est un tableau d'objets
‫JSON qui contient ensuite un tas de données sur chacune des tournées.
‫Et donc oui,
‫ce sont les données que nous allons envoyer au client.
‫Maintenant, avant de pouvoir
‫envoyer les données, nous devons d'abord les lire
‫et encore une fois, nous ne le faisons pas dans le gestionnaire
‫de route, mais nous le faisons avant.
‫D'accord, et comme je l'ai expliqué dans le projet précédent, nous
‫pouvons le faire car le code
‫de niveau supérieur n'est exécuté qu'une seule fois, ce qui
‫est juste après le démarrage de l'application, à droite.
‫Et maintenant que vous savez tout sur la
‫boucle d'événements, cela a encore plus de sens pour vous à ce stade, n'est-ce pas.
‫Donc, seule cette fonction de rappel, par exemple ici, s'exécutera
‫à l'intérieur de la boucle d'événement et
‫donc ici, nous ne pouvons pas avoir de bloc et de code.
‫Mais à l'extérieur, ce n'est pas un problème du tout.
‫Cela lit simplement les visites dans une variable en
‫dehors de tout cela de manière synchrone.
‫Donc fs, et pour cela, bien
‫sûr, nous avons besoin du module en fait, et
‫nous le faisons donc ici en haut.
‫Et j'aime toujours commencer par les modules de base
‫et donc je le fais au premier.
‫Exigez donc, fs, donc
‫fs. readFileSync, c'est déjà là.
‫Et maintenant, utilisons le dirname.
‫Et encore une
‫fois, à ce stade, vous savez
‫déjà pourquoi nous avons en fait accès à cette variable ici, donc dirname est
‫le dossier où se trouve le script
‫actuel, et c'est ce dossier principal.
‫Donc, à partir de là, nous devons passer aux données
‫de développement, puis aux données, puis à celles-ci,
‫nous avons des tours simples. json.
‫D'accord, et maintenant, dans cette étape, analysons
‫également le résultat.
‫Donc JSON, en fait la majuscule,
‫donc JSON. parse, de sorte que le
‫JSON que nous avons ici sera automatiquement converti en un
‫objet Javascript ou un tableau d'objets Javascript, en fait.
‫Donc en le sauvegardant et donc cela va le reformater et maintenant tout ce
‫que nous avons
‫à faire est de vraiment le renvoyer au client,
‫donc res. json,
‫et permettez-moi de spécifier le code
‫d'état ici, même si
‫200 est la norme, j'aime le faire dans chaque réponse.
‫D'accord, donc JSON, et que voulons-nous renvoyer maintenant ?
‫Pas de message, c'est sûr.
‫Alors qu'est-ce qu'on veut renvoyer ?
‫Eh bien, rappelez-vous que
‫nous allions utiliser la norme de formatage Jsend JSON.
‫D'accord, et donc là-dedans, nous spécifions un statut, et donc
‫un statut, et cela peut être
‫un succès, un échec ou une erreur, d'accord.
‫Le succès est donc évident.
‫C'est quand nous avons un code 200 ou un
‫201 ou vraiment n'importe quel code qui commence par 200.
‫Ensuite, nous avons l'échec, qui est une erreur sur le client, puis
‫nous avons également une erreur,
‫lorsqu'il y a eu une erreur sur le serveur.
‫D'accord, mais nous allons les utiliser un peu plus tard.
‫Quoi qu'il en soit, nous avons également la propriété data qui
‫est, comme je
‫l'ai mentionné, la soi-disant enveloppe pour nos données.
‫Nous spécifions donc la propriété
‫data et ces données auront à leur tour un objet qui
‫contient alors les données, donc l'étape
‫de réponse que nous voulons réellement envoyer.
‫Et dans ce cas, ce sont des visites.
‫Donc des tournées et puis des tournées, qui est
‫le même nom dans ce cas.
‫Donc avec ES6, nous n'avons en fait pas besoin de
‫spécifier la clé et la valeur s'ils ont le même
‫nom, donc nous pourrions simplement écrire
‫des tournées, mais je voulais juste préciser
‫ici que j'ai écrit des tournées ici parce
‫que, eh bien, c'est le nom de la ressource et du point
‫de terminaison, et c'est pourquoi,
‫à l'intérieur des données, je renvoie ensuite un objet qui a la propriété tour.
‫D'accord, donc si cela s'appelait x, par
‫exemple, alors j'appellerais celui-ci
‫ici x, mais ici, j'aurais toujours besoin de dire tournées, d'accord.
‫Je le remets aux tournées parce que cela a plus de sens et
‫maintenant je peux le supprimer ici et le laisser comme ça.
‫Et c'est en fait tout ce que nous avons à faire.
‫Nous avons donc lu nos données, puis nous avons formaté
‫notre réponse comme ceci ici, en utilisant la spécification de données JSend.
‫D'accord, des trucs très simples.
‫Testons-le maintenant et nous
‫devons maintenant changer, bien sûr, l'URL, nous
‫avons donc une API slash, une version slash et des visites.
‫C'est donc notre URL.
‫Nous faisons toujours une requête
‫get, et c'est donc celle à laquelle nous répondons
‫dans le code, alors rappelez-vous, en utilisant cette
‫méthode get, et appuyez sur Send, et en effet, c'est parti.
‫Donc ici, nous avons toutes nos tournées.
‫Alors, génial, c'est vraiment cool.
‫Vraiment, très beau travail.
‫Maintenant, pour terminer, une autre chose que
‫j'aime faire généralement lorsque nous envoyons plusieurs réponses est
‫d'inclure un champ appelé résultats
‫avec le nombre de résultats que nous envoyons.
‫D'accord, et cela ne fait pas
‫vraiment partie de la
‫spécification JSend, mais j'aime toujours
‫beaucoup le faire car cela permet
‫au client d'obtenir très facilement des informations
‫très rapides sur les données qu'il reçoit.
‫Nous savons donc que les tournées sont un tableau et donc tout ce
‫que nous avons à faire est de dire des tournées. longueur.
‫D'accord, et cela n'a de
‫sens que lorsque nous envoyons un tableau, donc plusieurs objets.
‫Si nous n'envoyions qu'une seule tournée, cela n'aurait aucun
‫sens d'avoir des résultats tels qu'un, n'est-ce pas,
‫et je ne le
‫fais donc que chaque fois que nous envoyons
‫un tableau contenant plusieurs objets.
‫Faisons-le donc à nouveau.
‫Et en effet, nous avons neuf résultats, puis
‫nous avons la propriété data, puis là-dedans, tours, pour
‫spécifier que nous envoyons
‫des tours, puis un tableau avec les neuf tours là-dedans.
‫Vous pouvez donc voir un autre objet
‫et un autre et un
‫autre, et jusqu'à la
‫fin, c'est donc la toute première étape de notre API.
‫Bien sûr, à ce stade, c'est comme une API basée sur des fichiers, nous lisons donc ces données
‫à partir d'une API, mais plus tard, bien
‫sûr, nous allons stocker ces données dans
‫une base de données, puis les lire à partir de là.
‫Mais de toute façon, cela a déjà l'air un
‫peu réel et cela me fait vraiment du
‫bien, et j'espère que cela vous fera du bien aussi.
‫Voilà pour la requête get.
‫Ensuite, nous allons nous occuper de la demande de publication
‫afin que nous puissions réellement ajouter une nouvelle visite à nos données.