Introdução
O desenvolvimento web moderno é impensável sem uma API REST. É a base sobre a qual são construídos aplicativos móveis, frontends SPA e microsserviços. Se você é iniciante e quer aprender rapidamente a criar um backend, a combinação TypeScript + Express é o ponto de partida ideal. O TypeScript adiciona tipagem estrita ao JavaScript, tornando o código mais confiável e compreensível, especialmente ao trabalhar em equipe.
Neste guia, em 30 minutos, criaremos uma API REST completa para gerenciar uma lista de tarefas (Todo list). Você aprenderá a configurar o projeto, descrever modelos de dados, criar rotas e conectar um banco de dados. Nenhuma teoria desnecessária — apenas prática e código pronto para execução.
Pressupõe-se que você já tenha Node.js (versão 18+) e npm instalados. Caso contrário, baixe-os do site oficial.
1. Preparação do projeto e instalação de dependências
Vamos começar inicializando um novo projeto TypeScript. Abra o terminal e execute os comandos:
mkdir my-todo-apicd my-todo-apinpm init -yAgora, instale os pacotes necessários:
npm install expressnpm install -D typescript @types/node @types/express ts-node nodemonCrie o arquivo de configuração do TypeScript:
npx tsc --initNo arquivo tsconfig.json, certifique-se de que as seguintes linhas estejam descomentadas e configuradas:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"]}Crie a pasta src e o arquivo src/index.ts — este será o ponto de entrada da nossa aplicação.
Adicione scripts ao package.json para facilitar a execução:
"scripts": { "dev": "nodemon --exec ts-node src/index.ts", "build": "tsc", "start": "node dist/index.js"}2. Criação do servidor Express básico
Agora, vamos escrever um servidor mínimo em Express que escutará na porta 3000. Abra src/index.ts e adicione o seguinte código:
import express, { Request, Response } from 'express';
const app = express();const PORT = 3000;
// Middleware para parsing de JSONapp.use(express.json());
// Rota básica para verificaçãoapp.get('/', (req: Request, res: Response) => { res.send('Todo API funcionando!');});
app.listen(PORT, () => { console.log(`Servidor iniciado em http://localhost:${PORT}`);});Inicie o servidor com o comando npm run dev e abra o navegador em http://localhost:3000. Você deve ver a mensagem "Todo API funcionando!".
3. Definição do modelo de dados e armazenamento in-memory
Para simplificar, não conectaremos um banco de dados imediatamente; usaremos um armazenamento temporário na memória RAM. Crie o arquivo src/models/todo.ts:
export interface Todo { id: number; title: string; completed: boolean; createdAt: Date;}
export let todos: Todo[] = [ { id: 1, title: 'Estudar TypeScript', completed: false, createdAt: new Date() }, { id: 2, title: 'Escrever API REST', completed: false, createdAt: new Date() },];Observe o uso da interface Todo — isso garante que todos os objetos no array tenham a mesma estrutura.
4. Implementação das rotas CRUD
Criaremos o arquivo src/routes/todos.ts com rotas completas para as operações Create, Read, Update e Delete.
import { Router, Request, Response } from 'express';import { Todo, todos } from '../models/todo';
const router = Router();
// GET /api/todos — obter todas as tarefasrouter.get('/', (req: Request, res: Response) => { res.