ExpressJS - Routing
I framework Web forniscono risorse come pagine HTML, script, immagini, ecc. In percorsi diversi.
La seguente funzione viene utilizzata per definire le rotte in un'applicazione Express:
app.method (percorso, gestore)
Questo METODO può essere applicato a uno qualsiasi dei verbi HTTP: get, set, put, delete. Esiste anche un metodo alternativo, che viene eseguito indipendentemente dal tipo di richiesta.
Il percorso è il percorso in cui verrà eseguita la richiesta.
Il gestore è una funzione di callback che viene eseguita quando viene trovato un tipo di richiesta corrispondente sulla rotta pertinente. Per esempio,
var express = require('express');
var app = express();
app.get('/hello', function(req, res){
res.send("Hello World!");
});
app.listen(3000);
Se eseguiamo la nostra applicazione e andiamo a localhost:3000/hello, il server riceve una richiesta get sul percorso "/hello", la nostra app Express esegue il file callback funzione collegata a questo percorso e invia "Hello World!" come risposta.
Possiamo anche avere più metodi diversi sullo stesso percorso. Per esempio,
var express = require('express');
var app = express();
app.get('/hello', function(req, res){
res.send("Hello World!");
});
app.post('/hello', function(req, res){
res.send("You just called the post method at '/hello'!\n");
});
app.listen(3000);
Per testare questa richiesta, apri il tuo terminale e usa cURL per eseguire la seguente richiesta:
curl -X POST "http://localhost:3000/hello"
Un metodo speciale, all, è fornito da Express per gestire tutti i tipi di metodi http su un percorso particolare utilizzando la stessa funzione. Per utilizzare questo metodo, prova quanto segue.
app.all('/test', function(req, res){
res.send("HTTP method doesn't have any effect on this route!");
});
Questo metodo viene generalmente utilizzato per definire il middleware, di cui parleremo nel capitolo sul middleware.
Router
La definizione di percorsi come sopra è molto noiosa da mantenere. Per separare i percorsi dal nostro mainindex.js file, useremo Express.Router. Crea un nuovo file chiamatothings.js e digita quanto segue.
var express = require('express');
var router = express.Router();
router.get('/', function(req, res){
res.send('GET route on things.');
});
router.post('/', function(req, res){
res.send('POST route on things.');
});
//export this router to use in our index.js
module.exports = router;
Ora per utilizzare questo router nel nostro index.js, digita quanto segue prima di app.listen chiamata di funzione.
var express = require('Express');
var app = express();
var things = require('./things.js');
//both index.js and things.js should be in same directory
app.use('/things', things);
app.listen(3000);
Il app.use chiamata di funzione sul percorso '/things' allega il file thingsrouter con questo percorso. Ora qualsiasi richiesta che la nostra app riceva in "/ things", verrà gestita dal nostro router things.js. Il'/'route in things.js è in realtà una sotto route di "/ things". Visita localhost: 3000 / things / e vedrai il seguente output.
I router sono molto utili per separare i problemi e tenere insieme le parti rilevanti del nostro codice. Aiutano a costruire codice mantenibile. Dovresti definire i tuoi percorsi relativi a un'entità in un singolo file e includerlo utilizzando il metodo sopra nel tuo fileindex.js file.