Como escrever uma API REST em JavaScript em 30 minutos: guia prático

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que uma API REST em JavaScript em 30 minutos?

\n

O desenvolvimento web moderno é impensável sem APIs (Interface de Programação de Aplicações). REST (Transferência de Estado Representacional) é o estilo arquitetônico mais popular para criar serviços web. Se você quer aprender rapidamente desenvolvimento backend ou iniciar seu primeiro servidor, JavaScript e Node.js são a escolha ideal. Em 30 minutos, você poderá criar uma API REST completa que processará requisições, retornará dados em formato JSON e trabalhará com um banco de dados (no nosso exemplo, com um array simples na memória).

\n

Neste artigo, vamos analisar um exemplo prático: criaremos uma API para gerenciar uma lista de tarefas (To-Do list). Você aprenderá a configurar o servidor, processar requisições GET, POST, PUT e DELETE, além de adicionar validação básica. Ao final da leitura, você terá um código pronto que pode ser executado e testado imediatamente.

\n\n

Passo 1: Configuração do projeto e instalação das dependências

\n

Antes de escrever o código, é necessário preparar o ambiente. Certifique-se de ter o Node.js instalado (pode baixá-lo do site oficial). Em seguida, siga as instruções:

\n
    \n
  1. Crie uma nova pasta para o projeto, por exemplo rest-api-todo.
  2. \n
  3. Abra o terminal nesta pasta e execute o comando npm init -y — isso criará o arquivo package.json.
  4. \n
  5. Instale o Express — o framework mais popular para Node.js: npm install express.
  6. \n
  7. Para maior comodidade, instale o nodemon como dependência de desenvolvimento: npm install --save-dev nodemon. Ele reiniciará automaticamente o servidor quando houver alterações no código.
  8. \n
\n

Após a instalação, adicione o script de inicialização no package.json:

\n
"scripts": {\n  "start": "node index.js",\n  "dev": "nodemon index.js"\n}
\n\n

Passo 2: Criação do servidor básico com Express

\n

Agora, vamos criar o arquivo index.js — este será o ponto de entrada da nossa aplicação. Nele, configuraremos o servidor, conectaremos o middleware para trabalhar com JSON e definiremos a primeira rota.

\n
const express = require('express');\nconst app = express();\nconst PORT = 3000;\n\n// Middleware para parsing de JSON\napp.use(express.json());\n\n// Armazenamento temporário de dados (em vez de banco de dados)\nlet tasks = [\n    { id: 1, title: 'Estudar Express', completed: false },\n    { id: 2, title: 'Escrever API REST', completed: false }\n];\nlet currentId = 3;\n\n// Rota básica para verificação\napp.get('/', (req, res) => {\n    res.send('API REST funcionando! Use /api/tasks');\n});\n\n// Inicialização do servidor\napp.listen(PORT, () => {\n    console.log(`Servidor rodando em http://localhost:${PORT}`);\n});
\n

Execute o servidor com o comando npm run dev e abra no navegador http://localhost:3000. Você deverá ver a mensagem "API REST funcionando!".

\n\n

Passo 3: Implementação das operações CRUD (GET, POST, PUT, DELETE)

\n

Agora, a parte mais interessante — criaremos uma API REST completa para gerenciar tarefas. Implementaremos quatro métodos HTTP principais:

\n\n

3.1. GET /api/tasks — obter todas as tarefas

\n
// Obter todas as tarefas\napp.get('/api/tasks', (req, res) => {\n    res.json(tasks);\n});
\n\n

3.2. GET /api/tasks/:id — obter uma tarefa pelo ID

\n
// Obter tarefa pelo ID\napp.get('/api/tasks/:id', (req, res) => {\n    const id = parseInt(req.params.id);\n    const task = tasks.find(t => t.id === id);\n    \n    if (!task) {\n        return res.status(404).json({ message: 'Tarefa não encontrada' });\n    }\n    res.json(task);\n});
\n\n

3.3. POST /api/tasks — criar uma nova tarefa

\n
// Criar nova tarefa\napp.post('/api/tasks', (req, res) => {\n    const { title, completed } = req.body;\n    \n    // Validação\n    if (!title || typeof title !== 'string') {\n        return res.status(400).json({ message: 'O título da tarefa é obrigatório e deve ser uma string' });                

Blogs

Book Recommendations