ExpressJS - URL-Erstellung

Wir können jetzt Routen definieren, aber diese sind statisch oder fest. Um die dynamischen Routen zu verwenden, sollten wir verschiedene Arten von Routen bereitstellen. Durch die Verwendung dynamischer Routen können wir Parameter übergeben und basierend darauf verarbeiten.

Hier ist ein Beispiel für eine dynamische Route -

var express = require('express');
var app = express();

app.get('/:id', function(req, res){
   res.send('The id you specified is ' + req.params.id);
});
app.listen(3000);

Um dies zu testen, gehen Sie zu http://localhost:3000/123. Die folgende Antwort wird angezeigt.

Sie können '123' in der URL durch etwas anderes ersetzen, und die Änderung wird in der Antwort berücksichtigt. Ein komplexeres Beispiel dafür ist -

var express = require('express');
var app = express();

app.get('/things/:name/:id', function(req, res) {
   res.send('id: ' + req.params.id + ' and name: ' + req.params.name);
});
app.listen(3000);

Um den obigen Code zu testen, gehen Sie zu http://localhost:3000/things/tutorialspoint/12345.

Du kannst den ... benutzen req.paramsObjekt, um auf alle Parameter zuzugreifen, die Sie in der URL übergeben. Beachten Sie, dass die obigen 2 unterschiedliche Pfade sind. Sie werden sich niemals überlappen. Auch wenn Sie Code ausführen möchten, wenn Sie erhalten'/things' dann müssen Sie es separat definieren.

Musterangepasste Routen

Sie können auch verwenden regexum den URL-Parameterabgleich einzuschränken. Nehmen wir an, Sie brauchen dasideine 5-stellige lange Zahl sein. Sie können die folgende Routendefinition verwenden:

var express = require('express');
var app = express();

app.get('/things/:id([0-9]{5})', function(req, res){
   res.send('id: ' + req.params.id);
});

app.listen(3000);

Beachten Sie, dass dies wird only stimmen mit den Anforderungen überein, die eine 5-stellige Länge haben id. Sie können komplexere reguläre Ausdrücke verwenden, um Ihre Routen abzugleichen / zu validieren. Wenn keine Ihrer Routen mit der Anfrage übereinstimmt, erhalten Sie eine"Cannot GET <your-request-route>"Nachricht als Antwort. Diese Nachricht wird durch eine 404 nicht gefundene Seite ersetzt, die diese einfache Route verwendet -

var express = require('express');
var app = express();

//Other routes here
app.get('*', function(req, res){
   res.send('Sorry, this is an invalid URL.');
});
app.listen(3000);

Important - Dies sollte nach all Ihren Routen platziert werden, da Express die Routen vom Anfang bis zum Ende des index.js Datei, einschließlich der von Ihnen benötigten externen Router.

Wenn wir beispielsweise dieselben Routen wie oben definieren, wird beim Anfordern mit einer gültigen URL die folgende Ausgabe angezeigt. - -

Bei einer falschen URL-Anfrage wird die folgende Ausgabe angezeigt.