Uma API RESTful minimalista para gerenciamento de tickets de suporte, construída com Node.js usando apenas o módulo nativo http (ES Modules). Este repositório é ideal como projeto didático, protótipo ou microserviço local — os dados são persistidos em src/database/db.json.
O objetivo principal é fornecer endpoints simples para criar e listar tickets de suporte. A implementação evita frameworks externos de propósito, para deixar o funcionamento do servidor, roteamento e persistência mais explícitos.
Principais responsabilidades:
- Receber e parsear requisições JSON
- Criar tickets (POST /tickets)
- Listar tickets com filtro por status (GET /tickets?status=open)
- Node.js (ES Modules)
- JavaScript (sem dependências externas)
- Módulos nativos:
http,fs,crypto
Pré-requisitos:
- Node.js v18+ (recomendado)
Passos rápidos:
git clone https://github.com/alissonpef/API-Support-Tickets.git
cd API-Support-Ticket
npm run devO servidor ficará disponível em http://localhost:3456.
| Comando | Descrição |
|---|---|
npm run dev |
Inicia o servidor com node --watch src/server.js (hot-reload simples) |
src/
├── controllers/
│ └── tickets/ # controladores (create, index, update, remove, updateStatus)
├── database/
│ ├── database.js # classe de persistência (lê/grava em db.json)
│ └── db.json # dados persistidos
├── middlewares/
│ ├── jsonHandler.js # parse do corpo JSON
│ └── routeHandler.js # roteador simples
├── routes/
│ └── tickets.js # definição das rotas
└── utils/
├── parseRoutePath.js
└── extractQueryParams.js
Cria um novo ticket.
Request body (JSON):
{
"equipment": "Computador",
"description": "Não liga",
"user_name": "Fulano"
}Resposta: 201 com o objeto do ticket criado.
Retorna lista de tickets. Query opcional status para filtrar (ex.: ?status=open).
# Criar ticket
curl -X POST http://localhost:3456/tickets \
-H 'Content-Type: application/json' \
-d '{"equipment":"Computador","description":"Não liga","user_name":"Alisson"}'
# Listar tickets abertos
curl 'http://localhost:3456/tickets?status=open'- Fork -> branch feature -> Pull Request com descrição das mudanças.