API REST didática (Node.js + Express + MySQL) para demonstrar CRUD básico com autenticação por token e validação de campos.
Repositório Git: https://github.com/andrefrlima/api-rest-app.git
- Node.js (Express)
- MySQL (Knex + mysql2)
- Dotenv
- Node.js 18+
- MySQL 8+ (ou MariaDB compatível)
Crie o banco e a tabela:
CREATE DATABASE IF NOT EXISTS `api_app`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;
USE `api_app`;
CREATE TABLE IF NOT EXISTS `tarefas` (
`id` INT NOT NULL AUTO_INCREMENT,
`tarefa` VARCHAR(85) COLLATE utf8mb4_0900_ai_ci NOT NULL,
`descricao` TEXT COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`responsavel` VARCHAR(65) COLLATE utf8mb4_0900_ai_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci;- Clone o projeto:
git clone https://github.com/andrefrlima/api-rest-app.git
cd api-rest-app- Crie o arquivo
.env:
PORT=4000
DB_HOST=127.0.0.1
DB_USER=seu_usuario
DB_PASS=sua_senha
DB_NAME=api_app
DB_PORT=3306
API_TOKEN=1234567890- Instale as dependências e execute:
npm install
npm start
# API em: http://localhost:4000Envie o token 1234567890 no cabeçalho x-api-token ou como ?token=1234567890.
Exemplo de cabeçalho:
x-api-token: 1234567890
| Método | Rota | Descrição | Body (JSON) |
|---|---|---|---|
| GET | /tarefas |
Lista todas as tarefas | — |
| GET | /tarefas/:id |
Retorna uma tarefa por ID | — |
| POST | /tarefas |
Cria uma nova tarefa | { tarefa, descricao?, responsavel } |
| PUT | /tarefas/:id |
Atualiza uma tarefa existente | { tarefa, descricao?, responsavel } |
| DELETE | /tarefas/:id |
Remove uma tarefa | — |
Validação:
tarefaeresponsavelsão obrigatórios em POST e PUT.
Listar:
curl -H "x-api-token: 1234567890" http://localhost:4000/tarefasCriar:
curl -X POST http://localhost:4000/tarefas -H "Content-Type: application/json" -H "x-api-token: 1234567890" -d '{"tarefa":"Estudar Node","descricao":"CRUD simples","responsavel":"Vanderlei"}'Obter por ID:
curl -H "x-api-token: 1234567890" http://localhost:4000/tarefas/1Atualizar:
curl -X PUT http://localhost:4000/tarefas/1 -H "Content-Type: application/json" -H "x-api-token: 1234567890" -d '{"tarefa":"Estudar Node (atualizado)","descricao":"com token","responsavel":"Vanderlei"}'Excluir:
curl -X DELETE -H "x-api-token: 1234567890" http://localhost:4000/tarefas/1401 Unauthorized– token ausente ou inválido400 Bad Request– campos obrigatórios ausentes (tarefa,responsavel)404 Not Found– tarefa não encontrada500 Internal Server Error– erro inesperado no servidor
api-rest-app/
├─ src/
│ ├─ index.js
│ ├─ routes.js
│ ├─ database/
│ │ └─ connection.js
├─ .env.example
├─ package.json
└─ README.md
Uso educacional/didático. Ajuste conforme sua necessidade.