Express é um framework web leve e flexível para Node.JS que fornece um robusto conjunto de recursos para criar aplicativos web e APIs. Ele é amplamente utilizado devido à sua simplicidade, modularidade e extensibilidade.
Roteamento
O Express oferece um sistema de roteamento robusto que permite definir como o servidor deve responder a diferentes solicitações HTTP
import express from 'express'
const app = express()
app.get('/', (req, res) => {
res.send("Bem-vindo à Home!");
})
app.get('/sobre', (req, res) => {
res.send('Página Sobre');
})
const porta = 3000;
app.listen(porta, () => {
console.log(`Servidor rodando em <http://localhost>:${porta}/`);
})
Middleware
Middleware são funções que têm acesso ao objeto de requisição (req
), ao objeto de resposta (res
) e à próxima função de middleware no ciclo de solicitação-resposta. Eles são usados para modificar requisições e respostas, validar dados, gerenciar sessões, etc.
import express from 'express'
const app = express();
const logger = (req, res, next) => {
console.log(`${req.method} $[req.url}`);
next();
}
app.use(logger);
app.get('/', (req, res) => {
res.send('Bem-vindo à Home!');
})
const porta = 3000
app.listen(porta, () => {
console.log(`Servidor rodando em <http://localhost>:${porta}/`);
})
Manipulação de Erros
O Express permite a criação de middlewares específicos para tratamento de erros, que ajudam a lidar com exceções e fornecer respostas apropriadas.
import express from 'express';
const app = express();
app.get('/', (req, res) => {
throw new Error('Algo deu errado!');
});
const erroHandler = (err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Erro no servidor!');
};
app.use(erroHandler);
const porta = 3000;
app.listen(porta, () => {
console.log(`Servidor rodando em <http://localhost>:${porta}/`);
});
Integração com Banco de Dados
O Express pode ser facilmente integrado com vários bancos de dados como MongoDB, MySQL, PostgrSQL, entre outros, usando bibliotecas e drivers específicos.
import express from 'express';
import mongoose from 'mongoose';
const app = express();
const porta = 3000;
mongoose.connect('mongodb://localhost/meubanco', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const usuarioSchema = new mongoose.Schema({
nome: String,
email: String,
});
const Usuario = mongoose.model('Usuario', usuarioSchema);
app.get('/usuarios', async (req, res) => {
const usuarios = await Usuario.find();
res.json(usuarios);
});
app.listen(porta, () => {
console.log(`Servidor rodando em <http://localhost>:${porta}/`);
});
Modularidade
O Express permite a organização do código em módulos, o que facilita a manutenção e a escalabilidade do aplicativo.
.
├── app.js
├── routes
│ └── usuarios.js
Arquivo app.js
:
import express from 'express';
import usuariosRota from './routes/usuarios.js';
const app = express();
const porta = 3000;
app.use('/usuarios', usuariosRota);
app.listen(porta, () => {
console.log(`Servidor rodando em <http://localhost>:${porta}/`);
});
Arquivo routes/usuarios.js
:
import express from 'express';
const router = express.Router();
router.get('/', (req, res) => {
res.send('Lista de usuários');
});
export default router;