Autostrada

article publié le 28 octobre 2019

La grande majorité des serveurs Web ont un répertoire www contenant des fichiers statiques. Les serveurs Node.js ne font pas exception à la règle. Le problème avec ces derniers est que le routage des fichiers se fait "manuellement" ; à chaque fichier il faut associer une URL. Comme c'était un problème récurrent dans mes projets, j'ai décidé de créer un module NPM qui gère le routage une bonne fois pour toute : Autostrada.

Le routage se fait dynamiquement. C'est-à-dire que si un fichier est rajouté ou supprimé, le routage sera automatiquement mis à jour sans avoir besoin de redémarrer le serveur.

Grâce à ce module, seul 4 lignes suffisent à faire tourner un serveur web statique :

const app = require('express')();
const autostrada = require('autostrada')();

app.use(autostrada);
app.listen(80);

Cependant, rien ne nous empêche de complexifier un peu les choses. Par exemple le code qui suit associe les fichiers du type /xxx/yyy/index.html aux URL /xxx/yyy/ et /xxx/yyy. Ainsi que les fichiers du type /xxx/yyy/zzz.html à l'URL /xxx/yyy/zzz.

const app = require('express')();
const autostrada = require('autostrada')({
	fromPathToUrl: path => {
		if (path.match(/^((.*)\/)index\.html$/)) return [RegExp.$1, RegExp.$2];
		if (path.match(/^(.*)\.html$/)) return RegExp.$1;
		return path;
	}
});

app.use(autostrada);
app.listen(80);

Ce n'est pas la seule option du module, mais pour plus de détails je vous invite à visiter la page NPM.