Express.js em Português
Conceitos fundamentais do framework Express.js, incluindo rotas, middlewares e manipulação de requisições em JavaScript.
Cartões · 50
- Inicializar uma aplicação básica no Express
- const express = require('express'); const app = express(); app.listen(3000, () => console.log('Servidor rodando'));
- Definir rota GET básica
- app.get('/ola', (req, res) => { res.send('Olá Mundo!'); });
- Definir rota POST básica
- app.post('/usuarios', (req, res) => { res.status(201).send('Usuário criado'); });
- Definir rota PUT básica
- app.put('/usuarios/:id', (req, res) => { res.send('Usuário atualizado'); });
- Definir rota DELETE básica
- app.delete('/usuarios/:id', (req, res) => { res.sendStatus(204); });
- Definir rota PATCH básica
- app.patch('/usuarios/:id', (req, res) => { res.send('Campo modificado'); });
- Acessar parâmetros de rota (Route Params)
- app.get('/produtos/:id', (req, res) => { const { id } = req.params; res.send('Produto ' + id); });
- Acessar parâmetros de consulta (Query Params)
- app.get('/busca', (req, res) => { const termo = req.query.q; res.json({ busca: termo }); });
- Habilitar parsing de corpo JSON no Express
- app.use(express.json());
- Acessar corpo da requisição POST (Request Body)
- app.post('/login', (req, res) => { const { email, senha } = req.body; res.send('Logado: ' + email); });
- Habilitar parsing de dados via formulário URL-encoded
- app.use(express.urlencoded({ extended: true }));
- Enviar resposta em formato JSON
- app.get('/perfil', (req, res) => { res.json({ nome: 'Ana', idade: 25 }); });
- Definir status HTTP da resposta explicitamente
- app.get('/nao-encontrado', (req, res) => { res.status(404).send('Página não encontrada'); });
- Criar e registrar middleware global de log
- app.use((req, res, next) => { console.log(req.method, req.url); next(); });
- Middleware específico aplicado a uma única rota
- const auth = (req, res, next) => next(); app.get('/painel', auth, (req, res) => res.send('Painel privado'));
- Usar múltiplos middlewares em cadeia na rota
- app.get('/admin', verificaToken, ehAdmin, (req, res) => { res.send('Acesso concedido'); });
- Criar um agrupador de rotas usando Router
- const router = express.Router(); router.get('/lista', (req, res) => res.send([])); app.use('/clientes', router);
- Servir arquivos estáticos (HTML, CSS, imagens)
- app.use(express.static('public'));
- Servir arquivos estáticos em prefixo de rota virtual
- app.use('/static', express.static('public'));
- Capturar todas as rotas não tratadas (404 Fallback)
- app.use((req, res) => { res.status(404).send('Recurso não encontrado'); });
- Middleware de tratamento global de erros (4 parâmetros)
- app.use((err, req, res, next) => { console.error(err); res.status(500).json({ erro: err.message }); });
- Passar erro para o middleware de erro com next()
- app.get('/teste', (req, res, next) => { next(new Error('Falha no processamento')); });
- Redirecionar requisição para outra URL
- app.get('/antigo', (req, res) => { res.redirect('/novo'); });
- Enviar um arquivo para download no cliente
- app.get('/relatorio', (req, res) => { res.download('./arquivos/relatorio.pdf'); });
- Enviar um arquivo estático específico diretamente
- const path = require('path'); app.get('/', (req, res) => { res.sendFile(path.resolve('index.html')); });
- Definir cabeçalho personalizado de resposta
- app.get('/dados', (req, res) => { res.set('X-Total-Count', '100'); res.json([]); });
- Ler cabeçalho da requisição recebida
- app.get('/auth', (req, res) => { const token = req.get('Authorization'); res.send('Token: ' + token); });
- Configurar motor de templates (View Engine)
- app.set('view engine', 'ejs'); app.set('views', './views');
- Renderizar template dinâmico na rota
- app.get('/', (req, res) => { res.render('home', { titulo: 'Página Inicial' }); });
- Manipular método OPTIONS para checagem de CORS
- app.options('/api', (req, res) => { res.set('Access-Control-Allow-Origin', '*').sendStatus(204); });
- Habilitar CORS global com middleware comum
- const cors = require('cors'); app.use(cors());
- Definir rota com parâmetros opcionais
- app.get('/artigos/:ano/:mes?', (req, res) => { res.json(req.params); });
- Encadear manipuladores para o mesmo caminho via app.route()
- app.route('/livro').get((req, res) => res.send('Obter')).post((req, res) => res.send('Adicionar'));
- Pular middlewares restantes com next('route')
- app.get('/user/:id', (req, res, next) => { if (req.params.id === '0') return next('route'); next(); });
- Acessar endereço IP do cliente
- app.get('/ip', (req, res) => { res.send('Seu IP: ' + req.ip); });
- Verificar tipo de mídia aceito pelo cliente
- app.get('/conteudo', (req, res) => { if (req.accepts('json')) return res.json({}); res.send('Texto'); });
- Acessar cookies da requisição usando cookie-parser
- const cookieParser = require('cookie-parser'); app.use(cookieParser()); app.get('/', (req, res) => res.send(req.cookies));
- Definir um cookie de resposta
- app.get('/set-cookie', (req, res) => { res.cookie('sessaoId', '12345', { httpOnly: true }).send('Cookie gravado'); });
- Limpar um cookie existente
- app.get('/logout', (req, res) => { res.clearCookie('sessaoId').send('Desconectado'); });
- Ativar cabeçalho de proxy reverso confiavel
- app.set('trust proxy', 1);
- Adicionar segurança nos cabeçalhos HTTP com Helmet
- const helmet = require('helmet'); app.use(helmet());
- Compressão de respostas HTTP com compression
- const compression = require('compression'); app.use(compression());
- Registrar logs de requisições com Morgan
- const morgan = require('morgan'); app.use(morgan('dev'));
- Manipular upload de arquivos únicos usando Multer
- const multer = require('multer'); const upload = multer({ dest: 'uploads/' }); app.post('/foto', upload.single('imagem'), (req, res) => res.send('OK'));
- Definir variáveis globais da aplicação com app.locals
- app.locals.tituloApp = 'Sistema de Vendas'; app.get('/', (req, res) => res.send(req.app.locals.tituloApp));
- Passar dados entre middlewares via res.locals
- app.use((req, res, next) => { res.locals.usuarioId = 42; next(); }); app.get('/', (req, res) => res.send('ID: ' + res.locals.usuarioId));
- Definir rota com validação por expressão regular
- app.get(/.*fly$/, (req, res) => { res.send('Caminho termina com fly'); });
- Finalizar requisição sem enviar corpo
- app.get('/vazio', (req, res) => { res.end(); });
- Middleware para parsing de corpo de texto bruto
- app.use(express.text()); app.post('/texto', (req, res) => res.send('Recebido: ' + req.body));
- Tratar rotas assíncronas com try/catch e repassar erro
- app.get('/async', async (req, res, next) => { try { const dados = await buscaBanco(); res.json(dados); } catch (err) { next(err); } });