Na continuação de nossa exploração sobre a criação de uma aplicação web utilizando o framework Express.js, desta vez vamos focar em direcionar os links dentro de nossa aplicação. A capacidade de roteamento é fundamental em qualquer aplicativo web, pois determina como as diferentes partes da aplicação se comunicam entre si e como o servidor responde às solicitações do cliente.
Em Express, o roteamento é tratado através de um conjunto de métodos específicos que mapeiam as solicitações HTTP (como GET, POST, PUT, DELETE, etc.) para funções definidas pelo desenvolvedor. Essas funções são conhecidas como “handlers” ou “controladores”, e são responsáveis por processar as solicitações e retornar as respostas apropriadas.
Vamos começar entendendo como definir rotas básicas em uma aplicação Express. Em nosso aplicativo, que pode estar estruturado em diferentes arquivos ou em um único arquivo, utilizamos o objeto express.Router()
para criar um roteador separado, que pode então ser usado para definir e agrupar rotas relacionadas.
Por exemplo, suponha que temos um aplicativo de blog e queremos definir rotas para exibir postagens individuais, listar todas as postagens e adicionar uma nova postagem. Poderíamos fazer isso da seguinte maneira:
javascriptconst express = require('express');
const router = express.Router();
// Rota para exibir uma postagem específica
router.get('/postagens/:id', (req, res) => {
// Lógica para buscar e exibir a postagem com o ID fornecido
});
// Rota para listar todas as postagens
router.get('/postagens', (req, res) => {
// Lógica para buscar e exibir todas as postagens
});
// Rota para adicionar uma nova postagem
router.post('/postagens', (req, res) => {
// Lógica para adicionar uma nova postagem ao banco de dados
});
module.exports = router;
Neste exemplo, definimos três rotas diferentes usando o método get()
e post()
do roteador Express. A primeira rota é responsável por exibir uma postagem específica, onde :id
é um espaço reservado para o identificador único da postagem. A segunda rota lista todas as postagens, enquanto a terceira rota adiciona uma nova postagem ao blog.
Para utilizar essas rotas em nossa aplicação principal, precisamos incluir o roteador que acabamos de definir. Supondo que nosso aplicativo principal esteja em um arquivo chamado app.js
, podemos fazer o seguinte:
javascriptconst express = require('express');
const postagensRouter = require('./postagensRouter');
const app = express();
// Usando o roteador de postagens
app.use('/api', postagensRouter);
// Outras rotas e middleware podem ser definidos aqui
app.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});
Neste exemplo, estamos usando o método use()
do objeto app
do Express para incorporar o roteador de postagens em nosso aplicativo principal. O primeiro argumento passado para use()
especifica o prefixo da URL para o qual as rotas do roteador serão montadas. Isso significa que todas as rotas definidas no roteador de postagens serão acessíveis sob o prefixo /api
.
Além disso, é importante notar que o roteador de postagens está em um arquivo separado chamado postagensRouter.js
. Isso é uma prática comum em aplicações Express para manter o código organizado e modularizado.
Agora que entendemos como definir rotas básicas em uma aplicação Express e como incorporar roteadores em nosso aplicativo principal, podemos explorar alguns conceitos mais avançados, como roteamento com parâmetros, middleware de roteador e manipulação de erros. Esses recursos são essenciais para construir aplicativos web robustos e escaláveis em Node.js com Express.
“Mais Informações”
Claro! Vamos explorar como direcionar as rotas em uma aplicação Express no Node.js. O Express é um framework web para Node.js que simplifica o processo de criação de aplicativos web e APIs. Uma das tarefas mais comuns ao criar uma aplicação Express é definir e direcionar as rotas, que são os pontos de entrada para diferentes partes do seu aplicativo.
Para começar, é necessário entender o conceito de roteamento em Express. O roteamento em Express envolve associar uma URL específica a uma função que será executada quando essa URL for acessada. Isso permite que você responda a solicitações HTTP de diferentes maneiras com base na URL que o cliente solicita.
Aqui está um exemplo básico de como definir uma rota em uma aplicação Express:
javascriptconst express = require('express');
const app = express();
// Rota básica
app.get('/', (req, res) => {
res.send('Olá, mundo!');
});
// Inicia o servidor
app.listen(3000, () => {
console.log('Servidor iniciado na porta 3000');
});
Neste exemplo, estamos definindo uma rota para a raiz do nosso aplicativo (ou seja, quando alguém acessa a URL ‘/’) usando o método get()
. Quando alguém acessa a raiz do nosso aplicativo, o Express chama a função de retorno de chamada que passamos para get()
, que simplesmente envia a mensagem “Olá, mundo!” de volta para o cliente.
Agora, vamos explorar algumas técnicas avançadas de roteamento em Express:
-
Parâmetros de Rota:
Você pode definir rotas com partes variáveis usando parâmetros de rota. Por exemplo:javascriptapp.get('/users/:id', (req, res) => { res.send('ID do usuário: ' + req.params.id); });
Aqui,
:id
é um parâmetro de rota. Quando alguém acessa uma URL como ‘/users/123’, o valor ‘123’ é capturado pelo Express e pode ser acessado através dereq.params.id
. -
Middleware de Roteador:
O Express também permite que você organize suas rotas em arquivos separados usando roteadores. Isso é útil para dividir grandes aplicativos em partes menores e mais gerenciáveis. Por exemplo:javascript// usersRouter.js const express = require('express'); const router = express.Router(); router.get('/:id', (req, res) => { res.send('ID do usuário: ' + req.params.id); }); module.exports = router;
Em seu arquivo principal (por exemplo,
app.js
), você pode usar este roteador da seguinte forma:javascriptconst express = require('express'); const app = express(); const usersRouter = require('./usersRouter'); app.use('/users', usersRouter);
Agora, todas as rotas definidas em
usersRouter
estarão acessíveis em URLs que começam com ‘/users’. -
Manipuladores de Rota Encadeados:
Você pode encadear várias funções de middleware em uma única rota. Isso é útil para executar várias operações antes de enviar uma resposta ao cliente. Por exemplo:javascriptapp.get('/example/a', function (req, res, next) { console.log('Middleware A'); next(); }, function (req, res) { res.send('Rota A'); });
Aqui, temos duas funções de middleware. A primeira função é executada sempre que alguém acessa ‘/example/a’ e registra uma mensagem no console. Em seguida, chama
next()
para passar o controle para a próxima função de middleware, que envia a resposta ‘Rota A’ de volta para o cliente.
Estas são apenas algumas das muitas técnicas que você pode usar para direcionar rotas em uma aplicação Express. Dominar o roteamento é fundamental para construir aplicativos robustos e escaláveis com Express. Espero que este breve guia tenha sido útil e que você esteja pronto para explorar ainda mais o poder do Express em seus próprios projetos!