Webframeworks bieden resources zoals HTML-pagina’s, scripts, afbeeldingen, enz. op verschillende routes.
De volgende functie wordt gebruikt om routes te definiëren in een Express applicatie –
app.method(path, handler)
Deze METHOD kan worden toegepast op een van de HTTP werkwoorden – get, set, put, delete. Er bestaat ook een alternatieve methode, die onafhankelijk van het type verzoek wordt uitgevoerd.
Path is de route waarop het verzoek zal worden uitgevoerd.
Handler is een callback-functie die wordt uitgevoerd wanneer een overeenkomend verzoektype wordt gevonden op de relevante route. Bijvoorbeeld,
var express = require('express');var app = express();app.get('/hello', function(req, res){ res.send("Hello World!");});app.listen(3000);
Als we onze applicatie uitvoeren en naar localhost:3000/hello gaan, ontvangt de server een get verzoek op route “/hello”, onze Express app voert de callback functie uit die aan deze route is gekoppeld en stuurt “Hello World!” als antwoord.
We kunnen ook meerdere verschillende methoden op dezelfde route hebben. Bijvoorbeeld,
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);
Om dit verzoek te testen, open je je terminal en gebruik je cURL om het volgende verzoek uit te voeren –
curl -X POST "http://localhost:3000/hello"
Een speciale methode, all, wordt door Express geleverd om alle soorten http-methodes op een bepaalde route met dezelfde functie af te handelen. Om deze methode te gebruiken, kunt u het volgende proberen.
app.all('/test', function(req, res){ res.send("HTTP method doesn't have any effect on this route!");});
Deze methode wordt over het algemeen gebruikt voor het definiëren van middleware, die we in het middleware hoofdstuk zullen bespreken.
Routers
Het definiëren van routes zoals hierboven is erg vervelend om te onderhouden. Om de routes te scheiden van ons hoofd index.js bestand, zullen we Express.Router gebruiken. Maak een nieuw bestand met de naam things.js en typ daarin het volgende.
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.jsmodule.exports = router;
Nu om deze router in onze index.js te gebruiken, typ het volgende vóór de app.listen functie aanroep.
var express = require('Express');var app = express();var things = require('./things.js');//both index.js and things.js should be in same directoryapp.use('/things', things);app.listen(3000);
De app.use functie aanroep op route ‘/things’ koppelt de things router aan deze route. Nu zullen alle verzoeken die onze app op de ‘/things’ krijgt, worden afgehandeld door onze things.js router. De ‘/’ route in things.js is eigenlijk een subroute van ‘/things’. Bezoek localhost:3000/things/ en je ziet de volgende uitvoer.
Routers zijn erg nuttig bij het scheiden van zorgen en het bij elkaar houden van relevante gedeelten van onze code. Ze helpen bij het bouwen van onderhoudbare code. U moet uw routes met betrekking tot een entiteit in een enkel bestand definiëren en het met de bovenstaande methode opnemen in uw index.js-bestand.