API RESTful simples para gerenciamento de tickets de suporte técnico, construída com Node.js puro, sem frameworks externos.
- Criação de tickets de suporte
- Listagem de tickets (com filtro por status)
- Atualização de informações do ticket
- Fechamento de tickets com solução
- Remoção de tickets
- Persistência de dados em arquivo JSON
- Node.js
- JavaScript (ESM)
- File System API (fs)
- HTTP Server nativo
├── src/
│ ├── controllers/
│ │ └── tickets/
│ │ ├── create.js
│ │ ├── index.js
│ │ ├── remove.js
│ │ ├── update.js
│ │ └── updateStatus.js
│ ├── database/
│ │ ├── database.js
│ │ └── db.json
│ ├── middlewares/
│ │ ├── jsonHandler.js
│ │ └── routesHandler.js
│ ├── routes/
│ │ ├── index.js
│ │ └── tickets.js
│ └── utils/
│ ├── extractQueryParams.js
│ └── parseRoutePath.js
└── server.js
Método | Rota | Descrição |
---|---|---|
POST | /tickets |
Cria um novo ticket |
GET | /tickets |
Lista todos os tickets (opção: ?status=open ou ?status=closed ) |
PUT | /tickets/:id |
Atualiza informações de um ticket |
PATCH | /tickets/:id/close |
Fecha um ticket com solução |
DELETE | /tickets/:id |
Remove um ticket |
{
"id": "uuid",
"equipment": "Nome do equipamento",
"description": "Descrição do problema",
"user_name": "Nome do usuário",
"status": "open/closed",
"created_at": "timestamp",
"updated_at": "timestamp",
"solution": "Solução aplicada (apenas tickets fechados)"
}
- Clone este repositório
- Navegue até a pasta do projeto
- Execute o servidor:
node server.js
- A API estará disponível em
http://localhost:3333
curl -X POST http://localhost:3333/tickets \
-H "Content-Type: application/json" \
-d '{"equipment": "Mouse", "description": "Não funciona", "user_name": "Carlos"}'
curl http://localhost:3333/tickets?status=open
curl -X PATCH http://localhost:3333/tickets/ID_DO_TICKET/close \
-H "Content-Type: application/json" \
-d '{"solution": "Trocamos o equipamento"}'
- A API utiliza um sistema de rotas personalizado com suporte a parâmetros de rota e query strings
- Os dados são persistidos em um arquivo JSON local (db.json)
- Não há dependências externas, apenas módulos nativos do Node.js