Nous mettrons à jour notre Politique de confidentialité prochainement. En voici un aperçu.

L'essentiel de Node.js

Créer une requête

Testez gratuitement nos 1341 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Avant de mettre en place un serveur pour servir de l'information, examinez les envois de requête depuis un serveur Node.js. Il s'agit d'une étape cruciale pour comprendre le fonctionnement du moteur HTTP.
09:24

Transcription

Alors j’en suis sûr, vous avez déjà fait de la requête Ajax. Bah c’est bien parce que c'est ce dont on va parler plus ou moins ici parce qu’on est en train de travailler sur node.js et node.js lui, il est en capacité d’effectuer des requêtes vers un serveur. Bien sûr, on va commencer par ça pour parler de l’objet http. Évidemment, on verra après comment créer un serveur, je sais que c’est tout ce qui vous intéresse. Mais on va d’abord parler des requêtes, vous verrez que ça a un gros avantage parce que vous allez pouvoir faire des requêtes vers des serveurs. Pour l’exemple, nous on va utiliser le site internet wikipedia.org, et on va récupérer la fiche wiki/Node.js et celle-ci, on va simplement du coup, la scrapper . Scrapper, ça veut dire quoi ? Ça veut dire effectuer une requête vers un site, récupérer le contenu, et pourquoi pas après, travailler avec. Alors nous, on va pas travailler avec, on va voir comment on le récupère. On voit que le protocole utilisé ici, c’est du https. Alors il y a deux modules qui existent pour node. On va se créer une variable « https = » et on va faire un require sur le module https. Si vous travaillez avec un protocole https, vous utiliserez le module https. Si vous voulez monter un serveur en https, ça sera pareil, sinon ce sera le module http. Alors, une fois que vous aviez fait ça, il y a deux choses : alors, il va falloir faire une requête, donc on va préparer la requête. La requête, qu’est-ce que ça va être ? Ça va simplement être un appel à https.request, et ça, ça va prendre deux paramètres. Le premier paramètre, ce sera des options qu’on va créer après, et le deuxième paramètre, ce sera une fonction anonyme qui prendra en paramètres res, qui sera la response Et ça, ça va être important parce que travailler avec la response ça va nous permettre très facilement, eh bien de venir récupérer les bouts de requêtes qui arrivent, de voir ce qui se passe, de récupérer les headers, etc. Cet objet-là, on va pouvoir même le travailler. Alors, les options : c’est quoi ? C’est une variable toute basique : options, qui est un bête objet dans lequel on va mettre des paramètres. Les paramètres, il y en a quelques-uns qu’on va renseigner. D’abord, le hostname qui va être le hostname du site vers lequel on veut aller récupérer de l’info. Pour nous, le hostname en fait, c’est tout ce qu’on a là : fr.wikipedia.org. Donc là, on est bon, on va l’ajouter. Ensuite, on va devoir définir le port sur lequel on vient travailler. Pour du https, c’est 443, de base. Enfin, on va mettre le path ici. Le path, ce sera vraiment ici, le chemin vers la page. Pour nous, le chemin vers la page c’est /wiki/Node.js. On récupère ça, on vient le mettre ici. Et enfin, on a une dernière méthode à définir, c’est donc la méthode d’appel. La méthode d’appel, ici ça va être soit du GET, soit du POST, soit du PUT, on fait ce qu’on veut. Ici on va mettre nous, du GET, parce qu’on veut récupérer de l’information et non pas en envoyer. Alors, dans certains cas, vous allez travailler sur des APIs, vous mettrez ici du POST pour envoyer de l’information vers cette URL et puis pourquoi pas après, pour récupérer une réponse particulière. Vous voyez qu’avec node.js, vous pouvez tout à fait faire des requêtes REST, et vous pouvez envoyer de l’information vers un serveur. Alors maintenant, cette response. D’abord on va se créer ici une petite variable qui va s’appeler responseBody, et qui va simplement être vide pour le moment. Et puis on va se mettre des petits console.log pour voir ce qui se passe. Donc ici, on pourrait dire que ça démarre : Start, et puis ensuite, on pourrait aussi pourquoi pas, s’afficher des informations de la réponse parce que la réponse, elle est intéressante, c’est un objet, il y a pleins pleins de choses dessus, notamment dessus, il y a un statusCode. Ça, le statusCode, ça vous permet de savoir si ça s’est bien passé, si on a une 200, une 300, une 400, peu importe. Ensuite, on a également sur la response, ici, une autre information assez intéressante, c’est les headers de la response. Alors les headers de la response, qu’est-ce que c’est ? C’est simplement en fait donc, tous les headers qui composent votre réponse et qui vous permettent de travailler. On sait si c’est en cache, etc. Déjà comme ça, en l’état, on pourrait essayer. Il faut pas oublier à la fin, de terminer la requête, parce que si vous la terminez pas, ça partira mais ça s’arrêtera jamais. Je peux vous montrer hein, c'est-à-dire que je mets pas le request end. Je lance mon serveur, effectivement ça marche, mais il y a rien qui s’affiche. Donc si je veux vraiment une réponse, il faut que je dise à mon node.js d’arrêter, donc de stopper, de l’envoyer en fait, ni plus ni moins. Là, une fois que vous l’avez envoyée, effectivement il récupère bien. Start, ça démarre, 200, c’est donc le statusCode de la réponse ; et ensuite, on a tous les headers de la réponse. Alors, maintenant j’aimerais bien aussi, pourquoi pas, avoir plus d’informations. Donc je vais pouvoir, simplement ici, déjà lui donner un encoding particulier, donc je vais lui dire que ce que je veux pour en réponse, ce sera encodé avec de l’UTF-8, comme ça je me trompe pas. Et puis je récupère une information qui est exploitable. Et je vais câbler des événements. On va faire un res ici, « .on » et data. Vous l’avez déjà hein celui-là, vous le connaissez, et ici, qu’est-ce qu’on va récupérer ? Eh bien ce sera des chunks . Alors les chunks, ça va être des bouts de réponses, et ces chunks-là, ce qui est génial, c’est qu’on va pouvoir, d’abord pourquoi pas, faire un console.log du chunk, et puis venir l’ajouter à notre responseBody. Pour l’ajouter, on va utiliser +=, et puis on va simplement ici, lui donner le chunk, et comme ça on va composer plus ou moins la réponse jusqu’à la fin. Si je veux afficher ce qu’il a à l’intérieur, je vais pouvoir me câbler aussi sur res.on et end. Donc dès que ce sera terminé, simplement afficher mon objet responseBody, donc ma variable en fait hein, qui sera composé normalement d’absolument tous les chunks, donc ça devrait être une réponse complète avec le HTML de la page. Donc on va faire un petit Console.log et puis hop, ça ! On va maintenant demander dans la console, un affichage. Alors, on voit qu’effectivement hein, ici si j’agrandis un petit peu, là je vais avoir, bah ici, tout le code de la page, donc c’est vraiment le code HTML de la page, et puis, si je remonte un peu plus, ici, alors plus haut, bon bah, moi j’ai pas d’historique, mais plus haut effectivement, on aura bien les chunks. Si vous voulez voir ce que ça donne avec les chunks, on va simplement commenter cette ligne-là, et puis relancer le serveur. Vous voyez que c’est quand même extrêmement simple de venir travailler sur un serveur en node.js parce qu’on réussit à récupérer ici tous les petits paquets. Donc là, il vous donne des petits bouts partiels hein, de la réponse, du chunk. On pourrait aussi, pourquoi pas ici, juste afficher le chunk.length pour avoir uniquement la taille des différents bouts, et là, vous voyez qu’il récupère par paquet, jusqu’à vous composer la réponse finale. Ça fonctionne en pipe hein, c’est ce qu’on avait déjà vu, c’est exactement la même chose, c’est vraiment du pipe pur, ce qui veut dire qu’on pourrait, pourquoi pas, venir écrire cette réponse. Sur le end qu’on a ici, on pourrait utiliser le module fs, c’est pour ça d’ailleurs, que je l’ai conservé en haut, hein. On pourrait vouloir venir écrire dans le dossier le fichier HTML parce qu’on l’a déjà le fichier HTML. Comment on va faire ? Bah vous vous souvenez, allez, exercice : on fait un fs.writeFile, on va l’appeler, pourquoi pas, nodejs.html, comme ça. Et puis, ici à l’intérieur, vu que mon responseBody, il est terminé, puisqu’on est sur le end, bah je récupère le responseBody, je lui dis que c’est ça qu’il doit écrire, et qu’il y a pas de problèmes, et du coup, simplement ici, il y a peu de souci, ça fonctionne très bien. Alors, si je veux avoir un petit retour ici, je peux lui mettre un retour à l'intérieur avec un petit console.log, parce que souvenez-vous hein, celui-ci, il est asynchrone. Donc on va écrire à l’intérieur, au fur et à mesure, et avec le console.log, on peut dire que le fichier est créé, enfin created, comme ça. On va relancer ça, et à la fin, normalement hein, si on liste le répertoire, on devrait bien avoir ici, un nodejs.html. Si je vais l’ouvrir dans mon éditeur, ce nodejs.html qu’on a là, j’ai récupéré tout le code source de la page. Alors, on peut imaginer pleins de choses hein, parce que là maintenant, vu qu’on a récupéré le code source de la page, on pourrait se dire effectivement, qu’au lieu de faire une écriture de fichier ici, on pourrait travailler directement avec les datas. Ça, ce serait pas un problème, il suffirait simplement de venir faire un parser, de récupérer de la data à l’intérieur du HTML et puis de venir travailler avec, sachant que bon bah, on a toutes les informations. N’hésitez pas à utiliser ce genre de techniques quand vous avez des scrappers à faire, vous récupérez le contenu d'une page pour en faire autre chose, pour créer un autre contenu, pour travailler des slides par exemple, ça peut être très intéressant. Ça, c’est tout à fait possible. Et puis là, vous êtes dans un environnement du js, vous pouvez faire tourner, faire du requête, faites ce que vous voulez. Et là, vous avez un petit exemple qui vous explique comment on fait une requête. Bon maintenant je vous laisse vous amuser, vous avez plus qu’à essayer de faire d’autres requêtes pour performer un petit peu et n’hésitez pas non plus à aller regarder dans la documentation parce qu’ici on vous donne pleins d’exemples sympas, notamment ici, un petit exemple de scrapping. Et puis on vous explique comment on va pouvoir récupérer de l’info, quelles sont les différentes choses qu’on peut faire avec req par exemple. Alors ça, je vous le conseille hein, c’est vraiment super-intéressant, on va le câbler en dehors de la response, ce qui nous permet ici, de faire un on error et donc de récupérer, si vraiment il y a une erreur par exemple qui se déroule, bah là, on va avoir de l’info. Donc là, on pourra le câbler comme ça, et puis on pourrait essayer ici, n’importe quel nom de page qui n’existe pas. Le problème de wikipedia, c’est que un nom de page qui existe pas, ça existe quand même. Donc ça, c’est un peu le souci, mais si vous avez une page qui ne fonctionne pas, bah il passerait en erreur ici à l’intérieur, et vous auriez une vraie erreur, logiquement on devrait pouvoir essayer un nom de domaine complètement stupide comme ça, et effectivement, voilà, là vous avez une erreur. On vous dit qu’il ne trouve pas le nom de domaine, ça n’existe pas. Pensez bien à câbler ça, ça peut être intéressant dans certains cas de savoir si ça s’est bien déroulé ou pas, et de pouvoir agir en conséquence.

L'essentiel de Node.js

Exploitez les possibilités de Node.js et créez des applications côté serveur entièrement en JavaScript. Travaillez avec des requêtes web, gérez le protocole WebSocket, etc.

4h00 (44 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Node.js Node.js 7.0
Spécial abonnés
Date de parution :26 déc. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !