Construindo APIs com Node.js

17/09/2024

1. Por que usar Node.js para APIs?

O Node.js se destaca na construção de APIs por vários motivos:

  • Escalabilidade: O modelo assíncrono e baseado em eventos do Node.js é ideal para lidar com várias requisições simultâneas.
  • JavaScript em toda a pilha: Permite que os desenvolvedores usem a mesma linguagem tanto no frontend quanto no backend, simplificando o desenvolvimento.
  • Rápida prototipagem: Frameworks como Express.js facilitam a criação de APIs RESTful de forma rápida e eficiente.

2. Configurando o Ambiente

Antes de começar a construir a API, precisamos configurar o ambiente de desenvolvimento. Certifique-se de que o Node.js e o npm (Node Package Manager) estejam instalados.

Instalando o Node.js

# Verificando se o Node.js está instalado
node -v

# Verificando se o npm está instalado
npm -v

Criando um Projeto Node.js

Após confirmar a instalação do Node.js, crie uma nova pasta para o projeto e inicie o npm.

# Criando a pasta do projeto
mkdir api-nodejs
cd api-nodejs

# Inicializando o projeto Node.js
npm init -y

Instalando o Express

O Express é um framework minimalista para Node.js que facilita a criação de APIs RESTful.

# Instalando o Express
npm install express

3. Criando a Estrutura da API

Agora que o ambiente está configurado, vamos construir a estrutura básica da API. Crie um arquivo chamado server.js e adicione o seguinte código:

// Importando o Express
const express = require('express');
const app = express();
const porta = 3000;

// Configurando o servidor para lidar com JSON
app.use(express.json());

// Rota simples de teste
app.get('/', (req, res) => {
    res.send('API está funcionando!');
});

// Iniciando o servidor
app.listen(porta, () => {
    console.log(`Servidor rodando na porta ${porta}`);
});

Esse código cria um servidor básico que responde a requisições GET na raiz (/) com a mensagem "API está funcionando!". Para rodar o servidor, use o comando:

node server.js

Acesse http://localhost:3000 no navegador e você verá a resposta da API.

4. Criando Endpoints RESTful

APIs RESTful seguem um conjunto de princípios que permitem interações claras entre o cliente e o servidor. Vamos criar endpoints para um recurso de exemplo, como "usuários". Para isso, definiremos rotas para os métodos HTTP GET, POST, PUT e DELETE.

Listar Todos os Usuários (GET)

// Simulando uma base de dados de usuários
let usuarios = [
    { id: 1, nome: 'João' },
    { id: 2, nome: 'Maria' },
];

// Endpoint para listar todos os usuários
app.get('/usuarios', (req, res) => {
    res.json(usuarios);
});

Criar Novo Usuário (POST)

// Endpoint para criar um novo usuário
app.post('/usuarios', (req, res) => {
    const novoUsuario = { id: Date.now(), nome: req.body.nome };
    usuarios.push(novoUsuario);
    res.status(201).json(novoUsuario);
});

Atualizar Usuário (PUT)

// Endpoint para atualizar um usuário existente
app.put('/usuarios/:id', (req, res) => {
    const id = parseInt(req.params.id);
    const usuario = usuarios.find(u => u.id === id);
    
    if (usuario) {
        usuario.nome = req.body.nome;
        res.json(usuario);
    } else {
        res.status(404).json({ mensagem: 'Usuário não encontrado' });
    }
});

Deletar Usuário (DELETE)

// Endpoint para deletar um usuário
app.delete('/usuarios/:id', (req, res) => {
    const id = parseInt(req.params.id);
    usuarios = usuarios.filter(u => u.id !== id);
    res.status(204).send();
});

Com esses endpoints, você pode listar, criar, atualizar e deletar usuários simulados na sua API. O Express torna a criação de rotas RESTful simples e eficiente.

5. Melhorando a API

Agora que temos uma API básica funcionando, podemos melhorá-la implementando algumas práticas comuns:

Middleware para Logs

Os middlewares em Express são funções que podem interceptar requisições e adicionar funcionalidades. Vamos adicionar um middleware para logar as requisições recebidas:

// Middleware para logar as requisições
app.use((req, res, next) => {
    console.log(`${req.method} ${req.url}`);
    next();
});

Tratamento de Erros

Para garantir que a API responda adequadamente a erros, podemos criar um middleware de tratamento de erros.

// Middleware de tratamento de erros
app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('Algo deu errado!');
});

Conclusão

Construir APIs com Node.js e Express é uma maneira eficiente de criar backends rápidos e escaláveis. Com apenas algumas linhas de código, você pode criar uma API RESTful completa, pronta para lidar com operações CRUD (Criar, Ler, Atualizar e Deletar). A flexibilidade e a performance do Node.js fazem dele uma excelente escolha para desenvolvimento de APIs modernas.