Construindo uma Aplicação Web com Node.js e Express

Visão Geral do Node.js

Node.js é um ambiente de execução JavaScript open-source, baseado no motor V8 do Google Chrome, que permite executar código JavaScript fora do navegador. Graças ao seu modelo orientado a eventos e I/O não bloqueante, é possível criar aplicações de rede escaláveis e de alta performance, como APIs REST, aplicações em tempo real e ferramentas de linha de comando.

Estrutura do Projeto

Antes de começar, verifique se o Node.js está instalado executando o comando abaixo no terminal:

node --version

Caso a versão seja exibida, prossiga criando o diretório do projeto:

mkdir sistema-web-node
cd sistema-web-node

Inicialize o projeto com as configurações padrão:

npm init -y

Em seguida, instale o Express, framework minimalista para construção de servidores HTTP:

npm install express

Criando o Servidor HTTP

Na raiz do projeto, crie um arquivo chamado server.js com o segunite conteúdo:

const express = require('express');
const api = express();
const porta = 8080;

api.get('/', (requisicao, resposta) => {
  resposta.send('API funcionando corretamente');
});

api.listen(porta, () => {
  console.log(`Servidor acessível em http://localhost:${porta}`);
});

Esse trecho configura uma rota raiz que responde com uma mensagem simples. Para executar:

node server.js

Acesse http://localhost:8080 no navegador para confirmar que o servidor está ativo.

Exibindo uma Interfcae Estática

Para servir uma página HTML como frontend, crie uma pasta chamada static na raiz do projeto. Dentro dela, adicione o arquivo index.html:


<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sistema Web Node</title>
</head>
<body>
    <h1>Bem-vindo à aplicação</h1>
    <p>Esta página é servida diretamente pelo Express.</p>
</body>
</html>

Configure o middleware de arquivos estáticos no server.js, logo após a criação da instância do Express:

api.use(express.static('static'));

A partir de agora, ao acessar a raiz do servidor, o Express entregará o conteúdo do arquivo static/index.html automaticamente.

Integração com MongoDB via Mongoose

Para persistir dados, utilizaremos o MongoDB como banco de dados NoSQL e o Mongoose como biblioteca de modelagem. Certifique-se de que o MongoDB esteja em execução localmente e instale a dependência:

npm install mongoose

No arquivo server.js, adicione a configuração de conexão:

const mongoose = require('mongoose');

const uriMongo = 'mongodb://127.0.0.1:27017/sistemaWebDB';

mongoose.connect(uriMongo)
  .then(() => console.log('Conexão com MongoDB estabelecida'))
  .catch((erro) => console.error('Erro ao conectar:', erro));

Definindo o Modelo de Dados

Crie uma pasta models e, dentro dela, o arquivo cliente.js:

const mongoose = require('mongoose');

const EsquemaCliente = new mongoose.Schema({
  nome: { type: String, required: true },
  email: { type: String, required: true },
  cadastradoEm: { type: Date, default: Date.now }
});

module.exports = mongoose.model('Cliente', EsquemaCliente);

Registrando Dados por uma Rota

Importe o modelo no server.js e crie uma rota para inserir um novo registro:

const Cliente = require('./models/cliente');

api.get('/cadastrar-cliente', async (requisicao, resposta) => {
  try {
    const novoCliente = new Cliente({
      nome: 'Ana Silva',
      email: 'ana.silva@empresa.com'
    });

    await novoCliente.save();
    resposta.send('Cliente cadastrado com sucesso');
  } catch (erro) {
    resposta.status(500).send('Falha ao cadastrar cliente');
  }
});

Reinicie o servidor com node server.js e acesse http://localhost:8080/cadastrar-cliente. Se tudo estiver configurado, uma nova entrada será salva no banco de dados e a mensagem de sucesso será exibida.

Observações sobre Produção

O exemplo acima é intencionalmente básico. Em ambientes reais, recomenda-se utilizar requisições POST para criação de recursos, validar entradas do usuário, tratar erros de forma granular, armazenar credenciais de forma segura com hash e utilizar variáveis de ambiente para dados sensíveis, como a URI do banco de dados.

Tags: Node.js express.js mongodb mongoose REST API

Publicado em 7-22 22:08