Skip to content

Latest commit

 

History

History
97 lines (68 loc) · 2.53 KB

File metadata and controls

97 lines (68 loc) · 2.53 KB

API Support Tickets

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.

✨ Visão geral

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)

🛠️ Stack

  • Node.js (ES Modules)
  • JavaScript (sem dependências externas)
  • Módulos nativos: http, fs, crypto

🚀 Rodando localmente

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 dev

O servidor ficará disponível em http://localhost:3456.

⚙️ Scripts

Comando Descrição
npm run dev Inicia o servidor com node --watch src/server.js (hot-reload simples)

📁 Estrutura do projeto

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

🔌 Endpoints

POST /tickets

Cria um novo ticket.

Request body (JSON):

{
  "equipment": "Computador",
  "description": "Não liga",
  "user_name": "Fulano"
}

Resposta: 201 com o objeto do ticket criado.

GET /tickets

Retorna lista de tickets. Query opcional status para filtrar (ex.: ?status=open).

⚡ Exemplos (curl)

# 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'

Como contribuir

  • Fork -> branch feature -> Pull Request com descrição das mudanças.