Easy-Micro

ESPACEMEMBRE Full stack
Express

Installation de l'application Express

Formation Node.js par Easy-Micro Créez une application Express

Node.js plus Express

Coder des serveurs Web en Node pur est possible, mais long et laborieux. L'utilisation du framework Express simplifie ces tâches, en nous permettant de déployer nos API beaucoup plus rapidement.

Pour ajouter Express, exécutez la commande suivante à partir de votre dossier backend :
C:\Users\yo> cd C:/projet_full_stack/backend
C:\projet_full_stack\backend> npm install --save express
L'option --save demande à NPM d'inclure le package dans la section dependencies de votre package.json automatiquement, vous épargnant ainsi une étape supplémentaire.
Créez un fichier app.js, où vous placerez votre application Express :
const express = require('express');

const app = express();

module.exports = app;

Formation Node.js par Easy-Micro Exécutez l'application Express sur le serveur Node

Revenez à votre fichier server.js et modifiez-le comme suit :

Fichier server.js
const http = require('http');
const app = require('./app');

app.set('port', process.env.PORT || 3000);
const server = http.createServer(app);

server.listen(process.env.PORT || 3000);

Effectuer une demande vers ce serveur générera une erreur 404, car notre application n'a encore aucun moyen de répondre. Configurons une réponse simple pour nous assurer que tout fonctionne correctement, en effectuant un ajout à notre fichier app.js :

Fichier app.js
const express = require('express');

const app = express();

app.use((req, res) => {
   res.json({ message: 'Votre requête a bien été reçue !' }); 
});

module.exports = app;
Est utilisé ici un script de connexion (app.js)

Formation Node.js par Easy-Micro Ajoutez des middleware

Une application Express est fondamentalement une série de fonctions appelées middleware. Chaque élément de middleware reçoit les objets request et response, peut les lire, les analyser et les manipuler, le cas échéant. Le middleware Express reçoit également la méthode next, qui permet à chaque middleware de passer l'exécution au middleware suivant.

Fichier app.js
const express = require('express');

const app = express();

app.use((req, res, next) => {
  console.log('Requête reçue !');
  next();
});

app.use((req, res, next) => {
  res.status(201);
  next();
});

app.use((req, res, next) => {
  res.json({ message: 'Votre requête a bien été reçue !' });
  next();
});

app.use((req, res, next) => {
  console.log('Réponse envoyée avec succès !');
});

module.exports = app;

Cette application Express contient quatre éléments de middleware :

  • le premier enregistre "Requête reçue !" dans la console et passe l'exécution;
  • le deuxième ajoute un code d'état 201 à la réponse et passe l'exécution;
  • le troisième envoie la réponse JSON et passe l'exécution;

  • le dernier élément de middleware enregistre "Réponse envoyée avec succès !" dans la console.

Il s'agit d'un serveur très simple et qui ne fait pas grand-chose pour l'instant, mais il illustre comment le middleware fonctionne dans une application Express.

Formation Node.js par Easy-Micro Améliorez server.js

Avant d'aller plus loin dans le cours, apportons quelques améliorations à notre fichier server.js, pour le rendre plus stable et approprié pour le déploiement :

Fichier server.js
const http = require('http');
const app = require('./app');

const normalizePort = val => {
  const port = parseInt(val, 10);

  if (isNaN(port)) {
    return val;
  }
  if (port >= 0) {
    return port;
  }
  return false;
};
const port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

const errorHandler = error => {
  if (error.syscall !== 'listen') {
    throw error;
  }
  const address = server.address();
  const bind = typeof address === 'string' ? 'pipe ' + address : 'port: ' + port;
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges.');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use.');
      process.exit(1);
      break;
    default:
      throw error;
  }
};

const server = http.createServer(app);

server.on('error', errorHandler);
server.on('listening', () => {
  const address = server.address();
  const bind = typeof address === 'string' ? 'pipe ' + address : 'port ' + port;
  console.log('Listening on ' + bind);
});

server.listen(port);
Aperçu rapide de ce qui se passe ici :
  • la fonction normalizePort renvoie un port valide, qu'il soit fourni sous la forme d'un numéro ou d'une chaîne;
  • la fonction errorHandler recherche les différentes erreurs et les gère de manière appropriée. Elle est ensuite enregistrée dans le serveur;
  • un écouteur d'évènements est également enregistré, consignant le port ou le canal nommé sur lequel le serveur s'exécute dans la console.
  • Notre serveur de développement Node est à présent opérationnel. Vous pouvez ainsi ajouter les fonctionnalités appropriées à l'application Express.


< Page précédente FULL STACK