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.