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.

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.