Rotas

Rotas são responsáveis por definir os endereços e os métodos HTTP utilizados para interagir com determinado recurso.

Quando queremos recuperar uma lista de usuários da aplicação, fazemos uma requisição GET na rota /api/users. Quando queremos adicionar um usuário na aplicação, fazemos uma requisição POST para a mesma rota /api/users. A API precisa estar preparada para entender qual método foi utilizado e qual o endereço solicitado para poder entregar o recurso apropriado.

Uma das funcionalidades mais interessantes do Express é a capacidade de definir as rotas através de módulos, ou seja, não precisamos definir todas as rotas em um mesmo arquivo.

Criando a rota principal

Para criar o módulo com a rota principal, crie o arquivo router.js.

const express = require('express');

const router = express.Router();

router.get('/', (req, res) => {
  res.json({ message: 'Hello Router' });
});

module.exports = router;

Esse módulo exporta o objeto router que aceita requisições GET no endereço / e responde um JSON { message: 'Hello Router' }.

Integração com o Express

Para integrar a rota principal com o Express, edite o arquivo app.js.

const bodyParser = require('body-parser');
const compression = require('compression');
const cors = require('@robertoachar/express-cors');
const express = require('express');
const helmet = require('helmet');

const { catchAll, notFound } = require('./error');

const app = express();
const router = require('./router'); // importar a rota principal

app.use(helmet());
app.use(compression());
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.use('/', router); // integrar a rota principal

app.use(notFound);
app.use(catchAll);

module.exports = app;

Validando a rota principal

Abra o Postman e faça uma requisição GET em http://localhost:3000/.

{
  "message": "Hello Router"
}

Mundo Real

Para aplicações simples não há necessidade de criar um módulo para as rotas, elas podem ser definidas no mesmo local do Express (app.js).

Para aplicações de médio e grande porte, é uma boa prática modularizar as rotas para facilitar a criação de novas rotas e a manutenção das rotas existentes, além de manter as rotas separadas por domínios.

Resumo

  • Implementamos o módulo da rota principal
  • Aprendemos a funcionalidade e composição das rotas