Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida quanto a posição do endpoint in Routes.js

Boa noite. Ao invés da API proposta no curso, resolvi desenvolver uma de organizador financeiro, acompanhando o progresso do curso. A minha dúvida fica quanto à posição da rota de filtragem (no caso da minha API é a "/expense/search"), no arquivo Routes.js.

Quando eu implementei ela pela primeira vez, havia colocado após a rota de busca por ID ("/expense/:id") e quando ia fazer alguma requisição acusava erro 400 e somente quando mudei para a ordem conforme a foto, as requisições de filtragem funcionaram. Poderia me explicar o porquê a ordem das rotas importa ?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Grato.

2 respostas
solução!

Olá Manoel, tudo joia?

A ordem das rotas no arquivo Routes.js é importante devido ao modo como o Express.js realiza o roteamento das requisições. Quando uma requisição é feita, o Express verifica as rotas na ordem em que foram definidas e usa a primeira rota que corresponde ao padrão da URL requisitada.

No seu caso, quando a rota de filtragem "/expense/search" estava após "/expense/:id", o Express interpretava "/expense/search" como se fosse um id, porque "/expense/:id" é uma rota dinâmica que captura qualquer coisa que venha após "/expense/". Isso fazia com que a requisição fosse tratada pela rota de busca por ID, resultando em um erro 400, já que "search" não é um ID válido.

Ao mover "/expense/search" antes de "/expense/:id", você garante que o Express verifica primeiro a rota específica de busca antes de tentar corresponder a uma rota dinâmica.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá Armano, muitissímo obrigado pela ótima explicação.