Table des matières

Serveur Web minimal en Node.js

Sauvegarder le code suivant dans un fichier web.js

const http = require('http');

var server = http.createServer();

server.on('request', function(req, res) {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Salut tout le monde !');
});

server.on('listen', function() {
  console.log('Server started!');
})

server.listen(8080);

Exécuter le code précédent dans node et tester le en utilisant un navigateur Web et en vous connectant sur http://localhost:8080.

$ node web.js
Processing request...

Utilisation des modules

Générer un fichier package.json minimal avec npm init. Vous pouvez ensuite ajouter des modules à votre configuration avec l’option --save.

Premier pas avec Express

Expérimenter l’application minimal ci-dessous.

const express = require('express');

const app = express();

app.get('/', function(req, res) {
    res.send('Hello !');
});

app.get('/home', function(req, res) {
  res.send('Maison :-)');
});

app.get('/user/:uid', function(req, res) {
  res.send('Bonjour utilisateur ' + req.params.uid);
});

app.use(function(req, res, next){
  res.status(404).send('Page introuvable !');
});

app.listen(8080, function() {
  console.log('Example app listening on port 8080!');
});

Utiliser les modules ejs et markdown pour générer des réponses html facilement. Le module ejs est un module pour les templates html. Il faut mettre les fichiers de templates dans un répertoire views.

Express et les middleware

Configurer le middleware morgan pour logger toutes les requêtes

const morgan = require('morgan'); // Middleware de logging

app.use(morgan('combined'));

app.get('/', function(req, res) {
  res.send('Root');
}).listen(8080);

Supporter CORS

Pour pouvoir supporter Cors sur votre server, il suffit de charger le middleware cors.

Gérer son application avec PM2

Installer et configurer le module PM2 pour gérer votre application et la lancer sous forme de deamon. Vous pouvez ensuite utiliser PM2 pour monitorer votre application et même la recharger automatiquement quand vous modifiez un fichier. Voici les commandes les plus usuelles :

$ npm install pm2 -g
$ pm2 start app.js
$ pm2 ls
$ pm2 start app.js --watch
$ pm2 monit

Swagger

Utiliser l’éditeur swagger pour décrire la specification de votre API de gestion de carnet d’adresse et publier la doccumentation ad-hoc. Nous n’utiliserons pas les générateurs de code existant.

Node.js et MongoDB

L’utilisation de MongoDB avec Node est assez simple. Commencez par lancer le daemon mongod puis créer une base M2WEB avec une collection contacts en utilisant le shell mongo

$ mongo
> use M2WEB
> db.contacts.insertOne({name: 'toto', age: 24})
> db.contacts.find()
> db.contacts.insertOne({name: 'titi', age: 25})
> db.contacts.insertOne({name: 'tutu', age: 25})
> db.contacts.insertOne({name: 'tata', age: 28})
> db.contacts.find()

Vous pouvez ensuite écrire un programme dans node pour afficher le contenu de la collection.

const DABASE_NAME = 'M2WEB'
const collection  = 'contacts'
const MONGO_URL = 'mongodb://localhost:27017';

const MongoClient = require('mongodb').MongoClient;

async function printAllContacts(collection) {
    const results = await collection.find().toArray();
    for (const result of results) {
        console.log(`Contact : ${result.name} is ${result.age}`);
    }
}

(async function () {
    try {
        const client = await MongoClient.connect(MONGO_URL, {
            useNewUrlParser: true
        });
        const db = client.db(DABASE_NAME);
        const contacts = db.collection(collection);
        printAllContacts(contacts);
        client.close();
    } catch (e) {
        console.error(e)
    }
})()

Services REST avec Node.js

Implémenter votre API avec Node.js

Remarques