Node.js – Utilisation des serveurs Web et des cadres Web


Bienvenue dans le futur. La vie est belle, mais elle peut être meilleure. Et pourquoi ne le serait-il pas? Il vous suffit de le vouloir. Pensez à avoir enfin tout ce que vous avez toujours voulu.

– Max Lord (Wonder Woman 1984)

Je ne dirai pas que j’ai pensé à Node.js lorsque j’entends Max Lord dire ces mots dans la bande-annonce du prochain film Wonder Woman. Cependant, il est proche lorsque nous parlons de la création d’applications à l’aide de Node.js. De l’utilisation d’appareils à la création d’applications Web, c’est parfois tout ce dont vous avez besoin.

Dans l’un de mes précédents articles, j’ai écrit une brève introduction sur Node.js. Node peut être utilisé dans de nombreux endroits et aujourd’hui j’écrirai comment Node peut être utilisé dans le développement Web. Mon idée est de garder ces articles simples et de créer en même temps un chemin pour les publications à venir plus complexes. Si vous êtes nouveau sur Node, je vous suggère de consulter d’abord mon article précédent ici sur DZone sur ce lien, qui vous fournira le contexte de fond et vous facilitera la suite des sujets que nous allons couvrir. Commençons donc.

Module HTTP intégré

Le nœud a un serveur Web intégré et le code ci-dessus montre un serveur Web très basique. En fait, j’ai pris cette capture d’écran de mon dernier article, et ici nous allons comprendre un peu plus en détail.

  • le exiger appeler ici renvoie quelque chose. C’est juste un appel de fonction. Cet appel renvoie l’API du module dont nous avons besoin.
  • Nous capturons l’API du http module dans une variable locale, également nommée http. Nous aurions pu le nommer autrement, mais c’est généralement une convention.
  • Cette variable http locale possède désormais toutes les méthodes définies sur l’API publique du http. module.

createServer est une fonction d’ordre supérieur car elle reçoit une autre fonction en paramètre.
Nous aurions pu également écrire le code comme suit:

requestListener la fonction reçoit deux arguments. Ce sont des arguments positionnels:

req = Représente le côté demande de l’événement de demande.
res = Représente le côté réponse de l’événement de demande.

Alors le requestListener voici une fonction qui sera invoquée à chaque fois qu’il y a un événement request.

Serveur comme émetteur d’événements

le serveur objet que nous obtenons à la suite de l’appel du createServer() est une méthode émetteur d’événements et l’un des événements qu’il émet est nommé «demande».

En fait, ce même code peut être réécrit en utilisant l’API émetteur d’événements:

Chaque fois qu’un événement de demande arrive sur ce serveur, nous demandons à l’objet serveur d’exécuter notre fonction requestListener.

Reliez-vous les points maintenant?

Fonction RequestListener

Quelle que soit la route que vous prenez pour créer le serveur, le RequestListener est invoqué.

  • Dans la fonction, nous pouvons lire des informations sur la demande en utilisant le reqobjet. Par exemple, nous pouvons lire:
    • Quelle URL l’utilisateur demande.
    • Quels paramètres ils envoient.
    • De quelle IP ils viennent et bien d’autres choses.
  • Nous pouvons écrire des données retour au demandeur en utilisant le res objet que nous faisons en utilisant.fin() (raccourci pour les méthodes .write et .end).
  • Comme il s’agit d’une communication HTTP, nous devons suivre le protocole HTTP. Le protocole, par exemple, nécessite un signal explicite que la communication est terminée. C’est exactement pourquoi nous devons utiliser la méthode .end (). Cette méthode n’est pas facultative, car sans cela, la session http pensera que nous continuons à y diffuser des données.

Fonction d’écoute

CreateServer crée uniquement le serveur, elle ne le fait pas écouter activement les requêtes. Pour exécuter le serveur et l’activer, nous devions appeler le.Ecoutez sur l’objet serveur.
Le premier argument est le port et le second est une fonction de rappel qui sera invoquée si le serveur a réservé le port et a commencé à l’écouter avec succès.

Notez également que lorsque nous exécutons ce serveur, le processus Node n’a pas sortie parce que le boucle d’événement est maintenant également occupé à écouter les connexions entrantes sur le port et il le fera pour toujours. Plus d’informations sur la boucle d’événement dans un futur article.

Ainsi, notre serveur en cours d’exécution a une tâche active et il écoute les demandes entrantes. Cependant, ce processus de nœud utilise uniquement V8 lorsqu’il existe des connexions HTTP, sinon, V8 restera inactif. Cette fonction d’écoute est en fait la tâche qui maintient le nœud actif et ne quitte pas.

Cadres Web des nœuds

  • Bien que Node soit livré avec des modules intégrés pour fonctionner avec HTTP (que nous avons vu ci-dessus), ces modules sont de bas niveau et ils offrent des capacités limitées.
  • Il existe des cadres disponibles qui enveloppent la puissance intégrée dans Node et exposent une API plus simple pour créer des fonctionnalités dans votre serveur Web. L’un des plus populaires est Express.
  • Les autres cadres populaires sont:
    • KOA.js
    • Sails.js
    • Meteor.js et bien d’autres

Configuration Express

Vous pouvez utiliser npm pour installer Express comme suit. J’ai aussi installé craie (pour les messages de la console) également.

  • >> npm install express
  • >> npm installer la craie

Serveur Express de base

Ce code est tout ce dont nous avons besoin pour faire tourner un serveur express très simple.

Maintenant, voici une différence en ce qui concerne le serveur http intégré. Nous ne définissons pas un seul écouteur de demande. Nous définissons de nombreux auditeurs. Nous avons en fait définir un écouteur par URL (url, opérations http)

Construisons une API simple en utilisant Node.js, Express, et lodash. Pour persister, j’utiliserai un tableau en mémoire, mais n’hésitez pas à utiliser n’importe quel mécanisme de persistance que vous aimez. Une option pourrait être un fichier JSON utilisant lowdb. Pour plus de détails sur cette partie, consultez mon autre article sur DZone.

Voici ce que nous allons construire:

Installer lodash

lodash simplifie le travail avec les tableaux et objets JavaScript:

Code d’application

De plus, tout le code source est disponible via git et vous pouvez le télécharger à partir du lien dans la section récapitulative. Les captures d’écran suivantes vous donneront un aperçu des blocs de construction. Le code est explicite, mais si quelque chose n’est pas clair, n’hésitez pas à demander dans les commentaires.

Voici le server.js fichier qui est tout notre code de serveur Web. Ce fichier référence (nécessite) un autre module devices.js, qui contient toutes les routes et actions. Vous pouvez utiliser Facteur outil pour effectuer des appels REST pour tester l’API.

server.js

devices.js (opérations CRUD)

Résultat

Créer une opération:

Lire (GetAll) les données des appareils:

Vous pouvez tester Mise à jour (PUT) et Supprimer opérations de manière similaire.

Sommaire

Node est un très bon framework avec lequel travailler et rend certaines choses très intéressantes lors de la programmation. En raison de la nature dynamique de Javascript, il semble différent sur le backend, mais en même temps, c’est aussi une expérience agréable.

Vous pouvez télécharger le dépôt de code à partir de ce lien. Je continuerai à partager mes expériences de développement avec vous. Jusqu’à la prochaine fois, codage heureux.

Close Menu