Fake API

Documentação — Fake API

API RESTful completa e flexível em Node.js + Express, com arquitetura limpa e separação de responsabilidades. Ideal para protótipos, testes e simulação de contratos REST.

Escolhas padrão
  • • Gerenciador: npm
  • • Porta: 8000
  • • Banco: ./data/db.json
  • • CORS: liberado em dev, restrito em prod

Instalação rápida

git clone https://github.com/samuelikz/fakeapi.git
cd fakeapi

npm install

cp env.example .env
# ajuste as variáveis conforme necessário

npm run dev   # http://localhost:8000
# ou:
npm run build && npm start

Configuração (.env)

Crie o arquivo .env a partir de env.example e ajuste conforme seu ambiente:

VariávelPadrãoDescrição
NODE_ENVdevelopmentAmbiente de execução.
PORT8000Porta HTTP.
DB_PATH./data/db.jsonArquivo JSON do banco.
CORS_ORIGIN* (dev)Origens permitidas via CORS.

Endpoints

Health

MétodoEndpointDescrição
GET/healthHealth básico.
GET/health/detailedDetalhes de sistema, app e banco.
GET/health/pingPing simples (pong).
GET/health/readyReadiness (pronto p/ tráfego).
GET/health/liveLiveness.
GET/_healthAlternativo/compatibilidade.

Sistema

CRUD dinâmico

Para qualquer recurso (ex.: posts, users):

Parâmetros de consulta

Exemplos (curl)

GET /posts
curl -s http://localhost:8000/posts | jq
Busca + paginação
curl -s "http://localhost:8000/posts?q=node&_page=2&_limit=10&_meta=1" | jq
POST /posts
curl -s -X POST http://localhost:8000/posts \
  -H 'Content-Type: application/json' \
  -d '{"title":"Bem-vindo à Fake API","content":"API RESTful com arquitetura limpa.","author":"Samuel","tags":["api","rest","nodejs"]}' | jq
PUT /posts/1
curl -s -X PUT http://localhost:8000/posts/1 \
  -H 'Content-Type: application/json' \
  -d '{"title":"Título atualizado","content":"Conteúdo atualizado","author":"Samuel"}' | jq
PATCH /posts/1
curl -s -X PATCH http://localhost:8000/posts/1 \
  -H 'Content-Type: application/json' \
  -d '{"title":"Apenas o título"}' | jq
DELETE /posts/1
curl -s -X DELETE http://localhost:8000/posts/1 -i

Status Codes

Estrutura do banco

{
  "posts": [
    {
      "id": 1,
      "title": "Bem-vindo à Fake API",
      "content": "Esta é uma API RESTful completa com arquitetura limpa e separação de responsabilidades.",
      "author": "Samuel",
      "tags": ["api","rest","nodejs"],
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-01T00:00:00.000Z"
    }
  ],
  "users": [
    {
      "id": 1,
      "name": "João Silva",
      "email": "[email protected]",
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-01T00:00:00.000Z"
    }
  ]
}

Arquitetura

src/
├─ config/            # app & database config
├─ controllers/       # health, resource, system
├─ middleware/        # cors, logger, validation
├─ routes/            # health, resource, system
├─ services/          # database service
├─ utils/             # file utils
└─ server.js          # bootstrap da aplicação

Logs & Erros

[2024-01-01T00:00:00.000Z] GET /posts - Started
[2024-01-01T00:00:00.000Z] 🟢 GET /posts -> 200 (15ms)
[2024-01-01T00:00:00.000Z] 🔴 POST /posts -> 400 (8ms)
[2024-01-01T00:00:00.000Z] 💚 GET /health -> 200 (5ms)

Exemplo de erro padronizado:

{
  "error": "Bad Request",
  "message": "Invalid ID parameter. ID must be a positive number."
}

Interface Web

Contribuindo

  1. Faça fork do repositório
  2. Crie branch: git checkout -b feature/minha-feature
  3. Commits descritivos e testes
  4. Abra um Pull Request

Licença

Licenciado sob MIT. Veja LICENSE.

FAQ

Posso usar em produção?

Não recomendado. É voltado a desenvolvimento, testes e protótipos.

Como restringir CORS?

Defina CORS_ORIGIN com suas origens. Evite * fora de dev.