2
respostas

Rotas conflitantes

Como faço para que uma rota "/agenda/:id" coexista com uma rota "/agenda/tudo"? No caso que estou fazendo aqui, ele esta sempre roteando para "agenda/:id" entendendo que "tudo" é o valor de :id.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas

Suponho que esta espereando um numero no id, certo? Olhando na documentação da rota do express você pode usar expressão regular para ter maior controle do parâmetro, do seguinte modo:

    app.get("/agenda/:id(\\d+)", function(req, res) {
        res.send('agenda id: ' + req.params.qweid);
    });
    app.get("/agenda/tudo", function(req, res) {
        res.send('TUDO');
    });

A regex(expressão regular) \d+ significa que esperamos um numero \d e esperamos que tenha 1 ou mais carateres desse tipo, ou seja esperamos um ou mais digitos.

Foi utilizado \d+ (com duas contra barras) pois utilizando apenas uma, o express le \d como um caracter especial, como \n ou \t.

O problema que estou encontrando é que o meu ID é um hash (15sa54-dffds-d155d) e a expressão regular que funciona em qq testador de expressão regular não funciona quando aplico à rota.