Criando Middleware Personalizado
Deslize para mostrar o menu
No Express.js, é possível criar funções de middleware personalizadas utilizando o método app.use(). Essas funções recebem três parâmetros: req (o objeto de requisição), res (o objeto de resposta) e next (uma função para passar o controle para o próximo middleware na cadeia). O middleware personalizado pode ser aplicado globalmente a todas as rotas ou a rotas específicas, especificando um caminho de rota.
Criando Middleware Personalizado
Exemplo básico de uma função de middleware personalizada que registra o timestamp e a URL de cada requisição recebida:
app.use((req, res, next) => {
const timestamp = new Date().toISOString();
const url = req.url;
console.log(`[${timestamp}] ${url}`);
next(); // Pass control to the next middleware.
});
Neste exemplo, o middleware personalizado registra o timestamp e a URL de cada requisição recebida no console. A função next() é chamada para passar o controle ao próximo middleware no pipeline.
Exemplo Prático: Combinando Middleware Nativo e Personalizado
Exemplo prático utilizando um middleware nativo do Express para analisar dados JSON e, em seguida, criando um middleware personalizado para validar esses dados antes de prosseguir:
const express = require('express');
const app = express();
// Use built-in middleware to parse JSON data.
app.use(express.json());
// Custom middleware to validate JSON data.
app.use((req, res, next) => {
const jsonData = req.body;
if (!jsonData || Object.keys(jsonData).length === 0) {
// If the JSON data is missing or empty, send an error response.
return res.status(400).json({ error: 'Invalid JSON data' });
}
// Data is valid; proceed to the next middleware or route.
next();
});
// Route that expects valid JSON data.
app.post('/api/data', (req, res) => {
const jsonData = req.body;
res.status(200).json({ message: 'Data received', data: jsonData });
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
Neste exemplo:
- Utiliza-se o middleware nativo
express.json()para analisar os dados JSON recebidos; - Cria-se um middleware personalizado que verifica se os dados JSON analisados estão ausentes ou vazios. Se estiverem, envia uma resposta 400 Bad Request com uma mensagem de erro. Se os dados forem válidos, chama
next()para prosseguir para a rota; - A rota
/api/dataespera dados JSON válidos. Se o middleware personalizado validar os dados, o manipulador da rota os recebe e envia uma resposta de sucesso.
-
Linha 1: importa o framework Express.js;
-
Linha 2: cria uma instância da aplicação Express ao chamar
express(). O objetoappresultante é utilizado para definir rotas, middlewares e manipular requisições HTTP; -
Linha 5: ativa o middleware interno
express.json(). Esse middleware analisa automaticamente os corpos de requisições JSON recebidas e disponibiliza os dados através dereq.body; -
Linhas 8-18: definem um middleware personalizado utilizado para validar dados JSON recebidos;
-
verifica se
req.bodycontém dados; -
retorna uma resposta
400 Bad Requestse o corpo da requisição estiver ausente ou vazio; -
chama
next()se os dados JSON forem válidos e continua para o próximo middleware ou manipulador de rota; -
Linhas 21-24: definem uma rota
POSTem/api/data; -
recupera os dados JSON enviados a partir de
req.body; -
retorna uma resposta
200 OKcontendo uma mensagem de confirmação e os dados recebidos; -
Linhas 26-28: inicia a aplicação Express e começa a escutar requisições na porta
3000.
Este exemplo demonstra como é possível utilizar tanto middlewares internos quanto personalizados para validar dados antes que eles cheguem aos manipuladores de rota, garantindo que os dados estejam no formato esperado antes de serem processados.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Criando Middleware Personalizado
No Express.js, é possível criar funções de middleware personalizadas utilizando o método app.use(). Essas funções recebem três parâmetros: req (o objeto de requisição), res (o objeto de resposta) e next (uma função para passar o controle para o próximo middleware na cadeia). O middleware personalizado pode ser aplicado globalmente a todas as rotas ou a rotas específicas, especificando um caminho de rota.
Criando Middleware Personalizado
Exemplo básico de uma função de middleware personalizada que registra o timestamp e a URL de cada requisição recebida:
app.use((req, res, next) => {
const timestamp = new Date().toISOString();
const url = req.url;
console.log(`[${timestamp}] ${url}`);
next(); // Pass control to the next middleware.
});
Neste exemplo, o middleware personalizado registra o timestamp e a URL de cada requisição recebida no console. A função next() é chamada para passar o controle ao próximo middleware no pipeline.
Exemplo Prático: Combinando Middleware Nativo e Personalizado
Exemplo prático utilizando um middleware nativo do Express para analisar dados JSON e, em seguida, criando um middleware personalizado para validar esses dados antes de prosseguir:
const express = require('express');
const app = express();
// Use built-in middleware to parse JSON data.
app.use(express.json());
// Custom middleware to validate JSON data.
app.use((req, res, next) => {
const jsonData = req.body;
if (!jsonData || Object.keys(jsonData).length === 0) {
// If the JSON data is missing or empty, send an error response.
return res.status(400).json({ error: 'Invalid JSON data' });
}
// Data is valid; proceed to the next middleware or route.
next();
});
// Route that expects valid JSON data.
app.post('/api/data', (req, res) => {
const jsonData = req.body;
res.status(200).json({ message: 'Data received', data: jsonData });
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
Neste exemplo:
- Utiliza-se o middleware nativo
express.json()para analisar os dados JSON recebidos; - Cria-se um middleware personalizado que verifica se os dados JSON analisados estão ausentes ou vazios. Se estiverem, envia uma resposta 400 Bad Request com uma mensagem de erro. Se os dados forem válidos, chama
next()para prosseguir para a rota; - A rota
/api/dataespera dados JSON válidos. Se o middleware personalizado validar os dados, o manipulador da rota os recebe e envia uma resposta de sucesso.
-
Linha 1: importa o framework Express.js;
-
Linha 2: cria uma instância da aplicação Express ao chamar
express(). O objetoappresultante é utilizado para definir rotas, middlewares e manipular requisições HTTP; -
Linha 5: ativa o middleware interno
express.json(). Esse middleware analisa automaticamente os corpos de requisições JSON recebidas e disponibiliza os dados através dereq.body; -
Linhas 8-18: definem um middleware personalizado utilizado para validar dados JSON recebidos;
-
verifica se
req.bodycontém dados; -
retorna uma resposta
400 Bad Requestse o corpo da requisição estiver ausente ou vazio; -
chama
next()se os dados JSON forem válidos e continua para o próximo middleware ou manipulador de rota; -
Linhas 21-24: definem uma rota
POSTem/api/data; -
recupera os dados JSON enviados a partir de
req.body; -
retorna uma resposta
200 OKcontendo uma mensagem de confirmação e os dados recebidos; -
Linhas 26-28: inicia a aplicação Express e começa a escutar requisições na porta
3000.
Este exemplo demonstra como é possível utilizar tanto middlewares internos quanto personalizados para validar dados antes que eles cheguem aos manipuladores de rota, garantindo que os dados estejam no formato esperado antes de serem processados.
Obrigado pelo seu feedback!