Sauvegarder le code suivant dans un fichier web.js
const http = require('http');
const 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...
Générer un fichier package.json
minimal avec npm init
. Vous pouvez ensuite ajouter des modules à votre configuration avec l’option --save
.
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
.
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);
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
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.
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)
}
})()
Implémenter votre API avec Node.js
res.json
express-session