serveur-statique middleware
Installer
Ceci est un module Node.js disponible via
npm registry. L’installation se fait à l’aide de la commande
npm install:
$ npm install serve-staticAPI
const serveStatic = require('serve-static');serveStatic(root, options)
Créer une nouvelle fonction middleware pour servir des fichiers depuis un répertoire
racine donnée. Le fichier à servir sera déterminé en combinant req.url
avec le répertoire racine fourni. Lorsqu’un fichier n’est pas trouvé, au lieu de
envoyant une réponse 404, ce module va plutôt appeler next() pour déplacer sur
vers le prochain middleware, permettant de s’empiler et de se replier.
Options
Accepter les intervalles
Activer ou désactiver l’acceptation des requêtes à distance, la valeur par défaut est true.
Désactiver ceci n’enverra pas Accept-Ranges et ignorera le contenu
de l’en-tête de la requête Range.
cacheControl
Activer ou désactiver le réglage de l’en-tête de réponse Cache-Control, par défaut à
true. Désactiver ceci ignorera les options immutable et maxAge
dotfiles
Définit comment les “dotfiles” sont traités lorsqu’ils sont rencontrés. Un dotfile est un fichier
ou un répertoire qui commence par un point (”.”). Notez que cette vérification est faite sur
le chemin lui-même sans vérifier si le chemin existe réellement sur le disque
. Si root est spécifié, seuls les dotfiles au-dessus de la racine sont vérifiés
(i. . La racine elle-même peut être dans un dotfile lorsqu’elle est définie à
à “nier”).
'allow'Aucun traitement spécial pour les dotfiles.'deny'Refuser une requête pour un dotfile et 403/next().'ignore'Prétendre que le dotfile n’existe pas et 404/next().
La valeur par défaut est 'ignore'.
etag
Activer ou désactiver la génération d’etag, la valeur par défaut est true.
Extensions
Définir les replis de l’extension de fichier. Lorsqu’elle est définie, si un fichier n’est pas trouvé, les extensions
données seront ajoutées au nom de fichier et recherchées. The first that
exists will be served. Example: ['html', 'htm'].
La valeur par défaut est false.
tombez
Définit le middleware pour que les erreurs du client tombent sous la forme de demandes
non traitées, sinon transférez une erreur du client. La différence est que les erreurs du client
comme une mauvaise requête ou une requête vers un fichier inexistant provoqueront
ce middleware simplement next() à votre prochain middleware quand cette valeur
est true. Lorsque cette valeur est false, ces erreurs (même 404s), invoqueront
next(err).
Généralement true est désiré de telle sorte que plusieurs répertoires physiques peuvent être
mappés à la même adresse web ou pour les routes à remplir dans des fichiers inexistants.
La valeur false peut être utilisée si ce middleware est monté sur un chemin que
est conçu pour être strictement un répertoire système de fichiers, qui permet à
de court-circuiter 404 s pour moins de frais généraux. Ce middleware répondra également à
toutes les méthodes.
La valeur par défaut est true.
immuable
Active ou désactive la directive immutable dans l’en-tête Cache-Control de la réponse
, par défaut false. If set to true, the maxAge option should
also be specified to enable caching. La directive immutable empêchera les clients pris en charge par
de faire des requêtes conditionnelles pendant la durée de vie de l’option
maxAge pour vérifier si le fichier a changé.
index
Par défaut, ce module enverra des fichiers “index.html” en réponse à une requête
sur un répertoire. Pour désactiver cette option, définissez false ou pour fournir un nouvel index, passez une chaîne
ou un tableau dans l’ordre préféré.
dernièrement modifié
Activer ou désactiver l’en-tête Last-Modified, la valeur par défaut est true. Utilise la dernière valeur modifiée du système de fichiers
.
maxAge
Fournir un max-age en millisecondes pour le cache http, par défaut à 0. Ce peut également être une chaîne acceptée par le module ms .
rediriger
Rediriger vers la fin ”/” lorsque le chemin est un dir. true par défaut.
setHeaders
Fonction pour définir des en-têtes personnalisés sur la réponse. Alterations to the headers need to
occur synchronously. La fonction est appelée en tant que fn(res, path, stat), où
les arguments sont:
resl’objet de réponsepathle chemin du fichier qui est envoyéstatl’objet stat du fichier qui est envoyé
Exemples
Servir des fichiers avec le serveur http node.js vanilla
const finalhandler = require('finalhandler');const http = require('http');const serveStatic = require('serve-static');
// Serve up public/ftp folderconst serve = serveStatic('public/ftp', { index: ['index.html', 'index.htm'] });
// Create serverconst server = http.createServer((req, res) => { serve(req, res, finalhandler(req, res));});
// Listenserver.listen(3000);Servir tous les fichiers comme téléchargements
const contentDisposition = require('content-disposition');const finalhandler = require('finalhandler');const http = require('http');const serveStatic = require('serve-static');
// Serve up public/ftp folderconst serve = serveStatic('public/ftp', { index: false, setHeaders: setHeaders,});
// Set header to force downloadfunction setHeaders(res, path) { res.setHeader('Content-Disposition', contentDisposition(path));}
// Create serverconst server = http.createServer((req, res) => { serve(req, res, finalhandler(req, res));});
// Listenserver.listen(3000);Servir en utilisant express
Simple
Ceci est un exemple simple d’utilisation de Express.
const express = require('express');const serveStatic = require('serve-static');
const app = express();
app.use(serveStatic('public/ftp', { index: ['default.html', 'default.htm'] }));app.listen(3000);Racines multiples
Cet exemple montre un moyen simple de rechercher dans plusieurs répertoires.
Les fichiers sont recherchés dans le premier public optimisé/, puis public/ second
en tant que repli.
const express = require('express');const path = require('path');const serveStatic = require('serve-static');
const app = express();
app.use(serveStatic(path.join(__dirname, 'public-optimized')));app.use(serveStatic(path.join(__dirname, 'public')));app.listen(3000);Différents paramètres pour les chemins
Cet exemple montre comment définir un âge maximum différent en fonction du fichier servi. Dans cet exemple, les fichiers HTML ne sont pas mis en cache, alors que tout le reste est pour 1 jour.
const express = require('express');const path = require('path');const serveStatic = require('serve-static');
const app = express();
app.use( serveStatic(path.join(__dirname, 'public'), { maxAge: '1d', setHeaders: setCustomCacheControl, }));
app.listen(3000);
function setCustomCacheControl(res, file) { if (path.extname(file) === '.html') { // Custom Cache-Control for HTML files res.setHeader('Cache-Control', 'public, max-age=0'); }}