Criando e Gerenciando Rotas no Express.js
Vamos explorar estes exemplos práticos de criação de rotas no Express.js em mais detalhes.
Rotas Básicas
Criação de uma aplicação simples em Express.js com rotas para diferentes métodos HTTP. Cada rota trata uma solicitação HTTP específica e envia uma resposta ao cliente.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('This is the homepage.');
});
app.post('/users', (req, res) => {
// Handle user creation logic here.
res.send('User created.');
});
app.put('/users/:id', (req, res) => {
// Handle user update logic here.
res.send(`User ${req.params.id} updated.`);
});
app.delete('/users/:id', (req, res) => {
// Handle user deletion logic here.
res.send(`User ${req.params.id} deleted.`);
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
- Rota GET: Esta rota responde a uma solicitação GET na URL raiz (
/). Usuários que acessam a página inicial da aplicação recebem a mensagem "This is the homepage."; - Rota POST: Esta rota responde a uma solicitação POST na URL
/users. Normalmente utilizada para criar novos registros de usuários. A rota inclui um comentário para a lógica de criação de usuário, que pode ser substituída pela lógica real; - Rota PUT: Esta rota responde a uma solicitação PUT na URL
/users/:id. Projetada para atualizar registros de usuários com base no parâmetro:id. Assim como a rota POST, inclui um comentário para a lógica de atualização de usuário; - Rota DELETE: Esta rota responde a uma solicitação DELETE na URL
/users/:id. Utilizada para excluir registros de usuários com base no parâmetro:id. Assim como as outras rotas, inclui um comentário para a lógica de exclusão de usuário.
Nota
Caso haja dúvidas sobre o URL ou queira revisar o conceito, consulte o seguinte artigo: URL vs URI vs URN
Manipulação de Parâmetros de URL
Foco na criação de uma rota que manipula parâmetros de URL. Parâmetros de URL são partes dinâmicas de uma URL que podem ser usadas para passar dados ao servidor. Funcionamento deste exemplo:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
- Definição de rota utilizando
app.get('/users/:id', ...), onde:idé um parâmetro de URL. Isso significa que, ao acessar uma URL como/users/123, a variávelreq.params.idconterá o valor123; - Dentro do manipulador de rota, acesso ao parâmetro
:idutilizandoreq.params.id; - Possibilidade de substituir o comentário por lógica para buscar dados do usuário com base no
userIdobtido do parâmetro de URL; - Por fim, resposta ao cliente com informações sobre o usuário identificado pelo parâmetro
:id.
Ordem e Priorização de Rotas
A ordem em que as rotas são definidas é importante porque o Express utiliza a estratégia de "primeira correspondência vence". A primeira rota que corresponder será executada. Neste exemplo, consideramos um cenário onde há uma rota específica e uma rota coringa:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
app.get('/users/*', (req, res) => {
// Handle generic user-related requests.
res.send('User-related request.');
});
- A primeira rota,
app.get('/users/:id', ...), é uma rota específica que responde a URLs como/users/123. Ela irá tratar requisições com um ID de usuário específico; - A segunda rota,
app.get('/users/*', ...), é uma rota coringa para requisições genéricas relacionadas a usuários. Ela utiliza um caractere curinga (*) para corresponder a qualquer URL que comece com/users/, como/users/settings.
Neste cenário, a ordem é crucial. A rota específica deve ser definida antes da rota coringa para garantir que ela tenha prioridade. Se você definir a rota coringa primeiro, ela irá corresponder a todas as URLs que começam com /users/, e a rota específica não terá a chance de tratar requisições com um ID de usuário.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 2.56
Criando e Gerenciando Rotas no Express.js
Deslize para mostrar o menu
Vamos explorar estes exemplos práticos de criação de rotas no Express.js em mais detalhes.
Rotas Básicas
Criação de uma aplicação simples em Express.js com rotas para diferentes métodos HTTP. Cada rota trata uma solicitação HTTP específica e envia uma resposta ao cliente.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('This is the homepage.');
});
app.post('/users', (req, res) => {
// Handle user creation logic here.
res.send('User created.');
});
app.put('/users/:id', (req, res) => {
// Handle user update logic here.
res.send(`User ${req.params.id} updated.`);
});
app.delete('/users/:id', (req, res) => {
// Handle user deletion logic here.
res.send(`User ${req.params.id} deleted.`);
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
- Rota GET: Esta rota responde a uma solicitação GET na URL raiz (
/). Usuários que acessam a página inicial da aplicação recebem a mensagem "This is the homepage."; - Rota POST: Esta rota responde a uma solicitação POST na URL
/users. Normalmente utilizada para criar novos registros de usuários. A rota inclui um comentário para a lógica de criação de usuário, que pode ser substituída pela lógica real; - Rota PUT: Esta rota responde a uma solicitação PUT na URL
/users/:id. Projetada para atualizar registros de usuários com base no parâmetro:id. Assim como a rota POST, inclui um comentário para a lógica de atualização de usuário; - Rota DELETE: Esta rota responde a uma solicitação DELETE na URL
/users/:id. Utilizada para excluir registros de usuários com base no parâmetro:id. Assim como as outras rotas, inclui um comentário para a lógica de exclusão de usuário.
Nota
Caso haja dúvidas sobre o URL ou queira revisar o conceito, consulte o seguinte artigo: URL vs URI vs URN
Manipulação de Parâmetros de URL
Foco na criação de uma rota que manipula parâmetros de URL. Parâmetros de URL são partes dinâmicas de uma URL que podem ser usadas para passar dados ao servidor. Funcionamento deste exemplo:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
- Definição de rota utilizando
app.get('/users/:id', ...), onde:idé um parâmetro de URL. Isso significa que, ao acessar uma URL como/users/123, a variávelreq.params.idconterá o valor123; - Dentro do manipulador de rota, acesso ao parâmetro
:idutilizandoreq.params.id; - Possibilidade de substituir o comentário por lógica para buscar dados do usuário com base no
userIdobtido do parâmetro de URL; - Por fim, resposta ao cliente com informações sobre o usuário identificado pelo parâmetro
:id.
Ordem e Priorização de Rotas
A ordem em que as rotas são definidas é importante porque o Express utiliza a estratégia de "primeira correspondência vence". A primeira rota que corresponder será executada. Neste exemplo, consideramos um cenário onde há uma rota específica e uma rota coringa:
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
// Fetch user data based on `userId`.
res.send(`User details for ID ${userId}.`);
});
app.get('/users/*', (req, res) => {
// Handle generic user-related requests.
res.send('User-related request.');
});
- A primeira rota,
app.get('/users/:id', ...), é uma rota específica que responde a URLs como/users/123. Ela irá tratar requisições com um ID de usuário específico; - A segunda rota,
app.get('/users/*', ...), é uma rota coringa para requisições genéricas relacionadas a usuários. Ela utiliza um caractere curinga (*) para corresponder a qualquer URL que comece com/users/, como/users/settings.
Neste cenário, a ordem é crucial. A rota específica deve ser definida antes da rota coringa para garantir que ela tenha prioridade. Se você definir a rota coringa primeiro, ela irá corresponder a todas as URLs que começam com /users/, e a rota específica não terá a chance de tratar requisições com um ID de usuário.
Obrigado pelo seu feedback!