Express JS
Qui suis-je ?
Benoît Chanclou

ExpressJS
Le complément
de NodeJS
Pourquoi Express ?
Ce qu'il est
- runtime JavaScript
- un moteur Chrome V8
- monothread
- une boucle d'événements
- I/O non bloquantes
NodeJS
Ce qu'il n'est pas
- ce n'est pas un framework web
- rien de particulier pour gérer des API
NodeJS
d'où ExpressJS
Ce qu'apporte ExpressJS
- un framework
- minimaliste
- intimement lié à NodeJS
Il offre
- un meilleure niveau de programmation
- abstraction de la tuyauterie
Express est fait pour
créer des serveurs
facilement
Serveur
Un serveur doit gérer
- le protocole
- les routes
- les requêtes
- les réponses
- les erreurs
Le serveur http RESTful
créer un serveur d'API
- récupérer la requête
- les paramètres
- les entêtes
- faire des choses
- construire la réponse
- corps
- entêtes
de Node à Express
les bases
Serveur http minimaliste node
var http = require('http');
http.createServer(function(req, res) {
res.write('hello world');
res.end();
}).listen(3000);Requête du serveur
$ node mon_serveur.js
$ curl http://localhost:3000
hello worldServeur http node
var http = require('http');
http.createServer(function(req, res) {
if (req.url == '/tom'){
res.write('hello tom')
} else {
res.write('hello world');
}
res.end();
}).listen(3000);Requête du serveur
$ node mon_serveur.js &
$ curl http://localhost:3000/
hello world
$ curl http://localhost:3000/tom
hello tom
$ curl http://localhost:3000/joe
hello world
Installer Express
$ npm install --dev express
ou
$ yarn add expressServeur http express
var http = require('http');
var express = require('express');
var app = express();
app.use('/tom', (req, res, next) => {
res.write('hello tom');
res.end();
});
app.use((req, res, next) => {
res.write('hello world');
res.end();
});
http.createServer(app).listen(3000);
use
- signature
app.use([path,] callback [, callback...])
- signature callback
function mw1(req, res, next) { next(); }
- req : requête
- res : réponse
- next : étape suivante
Autres méthodes
- get
- post
- put
- delete
- patch
- ... (toutes les méthodes du protocole http)
- all
Serveur http express
app.get('/tom', (req, res, next) => {
res.write('hello tom');
res.end();
});
app.post('/tom', (req, res, next) => {
res.write('creating tom...');
res.end();
});
Requête du serveur
$ curl http://localhost:3000/tom
hello tom
$ curl -X POST http://localhost:3000/tom
creating tom...Minimaliste
Seuls 4 objets sont définis
- Application
- routeur principal et gestion de l'application
- Router
- routeurs secondaires
- Request
- requête (corps, entêtes, paramètres, cookies,...)
- Response
- réponse à une requête (corps, entêtes,...)
l'objet application
l'objet routeur
l'objet de requête
l'objet de réponse
Le système de callback
anatomie d'un callback
- signature
function mw1(req, res, next) { next(); }
- req : requête
- res : réponse
- next : étape suivante
algorithme simplifié d'appel des callbacks
Recherche d'une callback
appel callback
appel next
renvoyer la réponse
oui
non
non
oui
Comment ne pas faire
méga callback
Construction de la réponse
Succession d'appels de callbacks
Authentification
Extraction des paramètres
Récupération du tenant
Formater la réponse
Accès aux données
Et si on renommait les callbacks :
middlewares
Ainsi naquirent les middlewares
-
express.json([options])
-
express.static(root, [options])
- express.urlencoded([options])
Ressources
Sites
- https://github.com/rajikaimal/awesome-express
- https://expressjs.com/fr
Base de données
NoSQL

Unitaires,
d'intégration,
de charge
ESIR 2020 Express JS
By Benoît Chanclou
ESIR 2020 Express JS
Cours ESIR 2020
- 512