O que é

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.

Principais Recursos

  1. 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}/`);
    })
    
  2. 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}/`);
    })
    
  3. 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}/`);
    });
    
  4. 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}/`);
    });
    
  5. 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;
    

Benefícios do Express