ExpressJS - Criação de URL

Agora podemos definir rotas, mas essas são estáticas ou fixas. Para usar as rotas dinâmicas, DEVEMOS fornecer diferentes tipos de rotas. Usar rotas dinâmicas nos permite passar parâmetros e processar com base neles.

Aqui está um exemplo de uma rota dinâmica -

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);

Para testar isso vá para http://localhost:3000/123. A seguinte resposta será exibida.

Você pode substituir '123' no URL por qualquer outra coisa e a alteração será refletida na resposta. Um exemplo mais complexo do acima é -

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);

Para testar o código acima, vá para http://localhost:3000/things/tutorialspoint/12345.

Você pode usar o req.paramsobjeto para acessar todos os parâmetros que você passa na url. Observe que os 2 acima são caminhos diferentes. Eles nunca se sobreporão. Além disso, se você quiser executar código quando obtiver'/things' então você precisa defini-lo separadamente.

Rotas com correspondência de padrão

Você também pode usar regexpara restringir a correspondência de parâmetro de URL. Vamos supor que você precisa doidpara ser um número de 5 dígitos. Você pode usar a seguinte definição de rota -

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);

Observe que isso vai only corresponder às solicitações que têm um comprimento de 5 dígitos id. Você pode usar regexes mais complexas para corresponder / validar suas rotas. Se nenhuma de suas rotas corresponder à solicitação, você receberá um"Cannot GET <your-request-route>"mensagem como resposta. Esta mensagem será substituída por uma página 404 não encontrada usando esta rota simples -

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 - Deve ser colocado depois de todas as suas rotas, já que o Express combina as rotas do início ao fim do index.js arquivo, incluindo os roteadores externos necessários.

Por exemplo, se definirmos as mesmas rotas acima, ao solicitar uma URL válida, a seguinte saída é exibida. -

Enquanto para uma solicitação de URL incorreta, a seguinte saída é exibida.