serve-static middleware
Installa
Questo è un modulo Node.js disponibile attraverso la
npm registry. L’installazione viene eseguita usando il comando
npm install:
$ npm install serve-staticAPI
const serveStatic = require('serve-static');serveStatic(radice, opzioni)
Crea una nuova funzione middleware per servire i file da una determinata directory
di root. Il file da servire sarà determinato combinando req.url
con la directory root fornita. Quando un file non viene trovato, invece di
inviare una risposta 404, questo modulo chiamerà invece next() per passare su
al prossimo middleware, consentendo impilamenti e fall-backs.
Opzioni
acceptRanges
Abilita o disabilita l’accettazione di richieste a distanza, di default a true.
Disabilitare questo non invierà Accept-Ranges e ignorerà il contenuto
dell’intestazione della richiesta Range.
cacheControl
Abilita o disabilita l’impostazione dell’intestazione della risposta Cache-Control, di default
true. Disabilitando questa opzione si ignoreranno le opzioni immutable e maxAge.
dotfiles
Imposta come vengono trattati i “dotfiles” quando si incontra. Un dotfile è un file
o una directory che inizia con un punto (”.”). Nota che questo controllo è fatto sul
il percorso stesso senza controllare se il percorso esiste effettivamente sul disco
. Se root è specificato, solo i dotfiles sopra la radice sono
controllati (i. . la radice stessa può essere all’interno di un dotfile quando impostato
a “negare”).
'allow'Nessun trattamento speciale per i file dot.'deny'Nega una richiesta per un dotfile e 403/next().'ignore'Pretend come il dotfile non esiste e 404/next().
Il valore predefinito è 'ignore'.
etag
Abilita o disabilita la generazione di etag, le impostazioni predefinite sono vere.
estensioni
Imposta fallback dell’estensione del file. Quando impostato, se un file non viene trovato, le estensioni
date verranno aggiunte al nome del file e alla ricerca. Il primo che
esiste sarà servito. Example: ['html', 'htm'].
Il valore predefinito è false.
fallthrough
Impostare il middleware per far cadere gli errori del client come richieste
non gestite, altrimenti inoltrare un errore del client. La differenza è che gli errori del client
come una richiesta errata o una richiesta a un file inesistente faranno sì che
questo middleware semplicemente next() al tuo prossimo middleware quando questo valore
è true. Quando questo valore è false, questi errori (anche 404s), invocano
next(err).
Di solito true è desiderato in modo che più cartelle fisiche possono essere
mappate allo stesso indirizzo web o per i percorsi da compilare file inesistenti.
Il valore false può essere usato se questo middleware è montato su un percorso che
è progettato per essere rigorosamente una singola directory di file system, che consente per
cortocircuito 404s per meno sovraccarico. Questo middleware risponderà anche a
tutti i metodi.
Il valore predefinito è true.
immutabile
Abilita o disabilita la direttiva immutable nell’intestazione della risposta
di Cache-Control, il valore predefinito è false. Se impostato su true, l’opzione maxAge dovrebbe anche essere specificata
per abilitare la caching. La direttiva immutable impedirà ai client supportati
di fare richieste condizionali durante la vita dell’opzione maxAge
per verificare se il file è cambiato.
indice
Per impostazione predefinita questo modulo invierà file “index.html” in risposta a una richiesta
su una directory. Per disabilitare questo set false o per fornire un nuovo indice passa una stringa
o un array nell’ordine preferito.
Ultima modifica
Abilita o disabilita l’intestazione Last-Modified, le impostazioni predefinite sono vere. Usa l’ultimo valore modificato del file
.
maxAge
Fornire un massimo di età in millisecondi per la cache http, predefinito a 0. Questa può anche essere una stringa accettata dal modulo ms .
reindirizzamento
Reindirizza a ”/” finale quando il nome del percorso è una dir. Il valore predefinito è true.
setHeaders
Funzione per impostare intestazioni personalizzate sulla risposta. Le modifiche alle intestazioni hanno bisogno di
si verificano in modo sincrono. La funzione è chiamata fn(res, percorso, stat), dove
gli argomenti sono:
resl’oggetto della rispostapathil percorso del file che viene inviatostatl’oggetto stat del file che viene inviato
Esempi
Servire i file con il server http di vaniglia node.js
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);Serve tutti i file come download
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);Servire con espresso
Semplice
Questo è un semplice esempio di utilizzo di 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);Radici multiple
Questo esempio mostra un modo semplice per cercare tra più directory.
I file vengono ricercati prima in public optimized/, poi public/ second
come fallback.
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);Impostazioni diverse per i percorsi
Questo esempio mostra come impostare un’età massima diversa a seconda del file servito. In questo esempio, i file HTML non sono memorizzati nella cache, mentre tutto il resto è per 1 giorno.
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'); }}