Veja nesse artigo
Introdução
Uma rota em uma API é um “caminho” que será “chamado” por uma aplicação ou cliente e responderá alguma informação.
Cada rota pode ter uma ou mais funções, e ela deve ser única na API, ao receber uma chamada ela faz todo o processamento necessário para retornar os dados que foi solicitado.
Por exemplo, uma rota na api chamada /produtos
, terá funções para retornar uma lista de produtos. O /produtos
é o caminho, a identificação dessa rota.
O sistema pode até ter duas rotas chamada /produtos, porém o tipo de solicitação para as duas rotas precisam ser diferentes, por exemplo uma pode ter o tipo GET e a outra o tipo POST.
Caso queira entender um pouco mais sobre rotas e API Rest, este artigo pode ajudar.
Básico de Rotas no Express
Para esta parte é necessário ter uma instalação padrão do Node.js com o Express, caso queira ver como fazer, acesse esse link.
As rotas são constituídas por 4 partes, são elas a instancia do express, o método de requisição (GET, POST, PUT, DELETE) e a função que será executada:
app.METHOD(PATH, HANDLER)
Primeira rota com o Express
Como visto anteriormente, é composta de 4 partes, e uma rota básica, que responde um Hello World, é declarada dessa maneira:
const express = require('express')
const app = express()
const port = 3000
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Exemplo app node rodando no endereço http://localhost:${port}`)
});
Após rodar esse código com o Node, caso você vá até o endereço http://localhost:3000 no navegador, irá mostrar o Hello World na tela.
Métodos de requisição
Um caminho de rota, pode ser igual desde que tenha diferentes métodos de requisição pra ela, e para declarar os diferentes tipos no express, se faz dessa forma:
const express = require('express')
const app = express()
const port = 3000
app.get('/user', function (req, res) {
res.send('Lista de usuários');
});
app.post('/user', function (req, res) {
res.send('Inserir um usuário');
});
app.put('/user/:id', function (req, res) {
res.send(`Editar um usuário com o id ${req.params.id}`);
});
app.delete('/user/:id', function (req, res) {
res.send(`Excluir um usuário com o id ${req.params.id}`);
});
app.listen(port, () => {
console.log(`Exemplo app node rodando no endereço http://localhost:${port}`)
});
Veja que há duas rotas /user
, porém uma delas é para listar todos os usuários e a outra é para inserir um usuário.
Outro ponto é que as rotas de editar e excluir também são iguais, o que muda é só o método. Ambas as rotas tem um :id
, esse é um parâmetro que precisa ser passado para a rota para que as funções de edição e deleção consigam ser executadas.
Quem for fazer a solicitação, precisa mandar algo como /user/10
, isso vai indicar que precisa ser manipulado o registro com id 10, e a função de manipulação consegue acessar esse parâmetro fazendo req.params.id
.
Separar as rotas em arquivos
A medida que as rotas de um sistema crescem, é uma boa prática separar essas rotas em arquivos, imagine 100 rotas no mesmo arquivo, dificulta muito a manutenção.
Para fazer isso existe o express.Router, com ele é possível escrever todas as rotas relacionada em um arquivo e depois exportar elas para que seja usado no arquivo principal, com isso as rotas de um módulo ficam separadas.
Crie um projeto do Node e coloque o seguinte código no server.js:
const express = require("express");
const app = express();
app.listen(3000, ()=>{
console.log('Funciona');
})
Agora crie um arquivo chamado userRoute.js na raiz do projeto, deve ficar mais ou menos assim a estrutura de arquivos:

O userRoute.js poderia estar dentro de um diretório de rotas também, pode ser organizado de qualquer forma, depois vamos importá-lo para dentro do server.js. Coloque o seguinte código no userRoute.js:
var express = require('express');
var router = express.Router();
router.get('/users', function(req, res) {
res.send(`Lista todos os usuários`);
});
router.post('/user', function(req, res) {
res.send(`Inclui um usuário`);
});
router.put('/user/:id', function(req, res) {
res.send(`Edita o usuário ${req.params.id}`);
});
router.delete('/user/:id', function(req, res) {
res.send(`Exclui o usuário ${req.params.id}`);
});
module.exports = router;
Nas duas primeiras linhas do arquivo tem o express e o express.Router que será utilizado para montar as rotas nesse arquivo para depois exportar.
Depois tem as rotas que são as mesmas vistas nos exemplos acima, e por fim o module.exports, que exporta todas as rotas definidas. Este exemplo é uma simulação de rotas para uma API de usuários.
Agora devemos voltar no server.js para realizar a importação para que tudo funcione normalmente, para isso, adicione o seguinte código no server.js:
const express = require("express");
const app = express();
var userRoute = require('./userRoute');
app.use('/', userRoute);
app.listen(3000, ()=>{
console.log('Funciona');
})
Com isso, vá ao terminal no diretório do projeto e digite node server.js
. Será mostrado o console.log Funciona e caso acesse pelo navegador o /users
, será mostrado a mensagem de lista de usuários:

Caso utilize o postman ou insomnia para testar as rotas de POST, PUT e DELETE, o resultado será esse:



Vídeo sobre o assunto
Caso queira, gravei um vídeo explicando todos os passos de como utilizar as rotas no express:
Código fonte
Além do botão, para notificações é muito comum colocar em ícones de sino.
Todo o código fonte dos exemplos mostrados estão no meu CodeSandbox
Para ver outros canais onde o posto conteúdo, meu Github e também cursos, veja os Links do Programando Soluções.
Conclusão
Esse assunto é um pouco extenso, abordei um geral e acredito que seja os mais utilizados, porém ainda tem recursos interessantes como middlewares, proteção com token, caminhos com expressões e entre outros assuntos que vale a pena dar uma olhada. Até o próximo post 🙂
Referências
https://expressjs.com/pt-br/guide/routing.html
https://expressjs.com/pt-br/starter/basic-routing.html
http://gabsferreira.com/os-metodos-http-e-a-diferenca-entre-eles/