Uso
Sintaxe Básica
Modo Arquivo
json-to-mock-api -f db.json
Modo Pasta
json-to-mock-api -d ./data
Sintaxe Completa
json-to-mock-api [opções]
Exemplos Práticos
Exemplo 1: Arquivo JSON Simples
json-to-mock-api -f db.json
Exemplo 2: Pasta com Porta Personalizada
json-to-mock-api -d ./mock-data -p 8080
Exemplo 3: Host e Porta Específicos
json-to-mock-api -f db.json -h 0.0.0.0 -p 3000
Exemplo 4: Usando npx
npx --yes json-to-mock-api -d ./data
📁 Estrutura de Arquivos
Modo Arquivo
No modo arquivo, toda a configuração fica em um único arquivo JSON:
{
"endpoints": {
"users": {
"GET": {
"body": [...],
"headers": {...},
"cookies": {...}
},
"POST": {
"body": {...}
}
},
"products": {
"GET": {
"body": [...]
}
}
}
}
Modo Pasta
No modo pasta, você pode organizar endpoints em múltiplos arquivos:
data/
├── users.json # Endpoint: /users
├── products.json # Endpoint: /products
├── api/
│ ├── orders.json # Endpoint: /api/orders
│ └── users.json # Endpoint: /api/users (estrutura completa)
└── config/
└── settings.json # Endpoint: /config/settings
Arquivos JSON Simples
Cada arquivo JSON simples vira automaticamente um endpoint GET:
[
{ "id": 1, "name": "João Silva", "email": "joao@email.com" },
{ "id": 2, "name": "Maria Santos", "email": "maria@email.com" }
]
Resultado: Endpoint GET /users
Arquivos com Estrutura Completa
Para controle total, use a estrutura de endpoints:
{
"endpoints": {
"users": {
"GET": {
"body": [...],
"headers": {
"X-Total-Count": "2"
}
},
"POST": {
"body": {...},
"cookies": {
"user_created": "true"
}
}
},
"users/:id": {
"GET": {
"body": {...}
}
}
}
}
🔗 Parâmetros de Path
O Json-To-Mock-Api suporta parâmetros dinâmicos usando a sintaxe :parametro
:
{
"endpoints": {
"users/:id": {
"GET": {
"body": { "id": 1, "name": "João Silva" }
}
},
"users/:userId/posts/:postId": {
"GET": {
"body": { "id": 1, "userId": 1, "title": "Post" }
}
}
}
}
Parâmetros Suportados
:id
→{id}
(detectado como integer):userId
→{userId}
(detectado como integer):name
→{name}
(detectado como string):slug
→{slug}
(detectado como string)
🌐 Métodos HTTP Suportados
Todos os métodos HTTP principais são suportados:
{
"endpoints": {
"users": {
"GET": { "body": [...] },
"POST": { "body": {...} },
"PUT": { "body": {...} },
"DELETE": { "body": {...} },
"PATCH": { "body": {...} },
"OPTIONS": { "body": {...} },
"HEAD": { "body": {...} },
"ALL": { "body": {...} }
}
}
}
📚 Documentação Swagger Automática
Acessando a Documentação
Quando o servidor está rodando, você tem acesso a:
- Interface Swagger UI:
http://localhost:3000/
- Especificação JSON:
http://localhost:3000/swagger.json
Funcionalidades da Documentação
- Interface Interativa: Teste endpoints diretamente no navegador
- Schemas Automáticos: Gerados baseados nos dados reais
- Parâmetros de Path: Automaticamente detectados e documentados
- Agrupamento: Endpoints organizados por pasta/arquivo de origem
- Headers e Cookies: Documentação automática de headers e cookies customizados
Personalização da Documentação
A documentação é gerada automaticamente com base em:
- Tags: Nome da pasta ou arquivo de origem
- Descrições: Geradas automaticamente para cada endpoint
- Exemplos: Baseados nos dados reais dos arquivos JSON
- Schemas: Inferidos automaticamente dos dados
🔧 Headers Mockados
Configure headers personalizados que serão enviados nas respostas:
{
"endpoints": {
"users": {
"GET": {
"body": [...],
"headers": {
"X-Total-Count": "100",
"X-API-Version": "2.0",
"Cache-Control": "max-age=3600",
"ETag": "\"abc123\""
}
}
}
}
}
Headers Úteis
- Paginação:
X-Total-Count
,X-Page
,X-Per-Page
- Cache:
Cache-Control
,ETag
,Last-Modified
- Versionamento:
X-API-Version
- Rate Limiting:
X-Rate-Limit
,X-Rate-Remaining
- Localização:
Location
(para recursos criados)
🍪 Cookies Mockados
Configure cookies que serão enviados nas respostas:
Cookies Simples
{
"endpoints": {
"auth/login": {
"POST": {
"body": { "success": true },
"cookies": {
"session_id": "abc123",
"user_id": "1",
"theme": "dark"
}
}
}
}
}
Cookies Avançados
{
"endpoints": {
"auth/login": {
"POST": {
"body": { "success": true },
"cookies": {
"session_id": {
"value": "sess_abc123def456",
"options": {
"httpOnly": true,
"secure": true,
"sameSite": "strict",
"maxAge": 3600000,
"path": "/",
"domain": ".exemplo.com"
}
}
}
}
}
}
}
Opções de Cookie
httpOnly
: Cookie acessível apenas via HTTPsecure
: Cookie só enviado via HTTPSsameSite
: Controle CSRF (strict
,lax
,none
)maxAge
: Duração em milissegundospath
: Caminho onde o cookie é válidodomain
: Domínio onde o cookie é válido
🎯 Casos de Uso Práticos
1. API de E-commerce
{
"endpoints": {
"products": {
"GET": {
"body": [
{ "id": 1, "name": "Notebook", "price": 2500.00 },
{ "id": 2, "name": "Mouse", "price": 50.00 }
],
"headers": {
"X-Total-Count": "2",
"X-Currency": "BRL"
}
}
},
"cart": {
"GET": {
"body": {
"items": [],
"total": 0
},
"cookies": {
"cart_id": "cart_123",
"currency": "BRL"
}
},
"POST": {
"body": {
"message": "Item adicionado ao carrinho"
},
"cookies": {
"last_added": {
"value": "product_1",
"options": {
"maxAge": 86400000
}
}
}
}
}
}
}
2. API de Autenticação
{
"endpoints": {
"auth/login": {
"POST": {
"body": {
"user": { "id": 1, "name": "João" },
"token": "jwt_token_here"
},
"headers": {
"X-Auth-Status": "success"
},
"cookies": {
"session_id": {
"value": "sess_abc123",
"options": {
"httpOnly": true,
"secure": true,
"maxAge": 3600000
}
}
}
}
},
"auth/logout": {
"POST": {
"body": { "message": "Logout realizado" },
"cookies": {
"session_id": {
"value": "",
"options": { "maxAge": 0 }
}
}
}
}
}
}
3. API com Paginação
{
"endpoints": {
"posts": {
"GET": {
"body": [
{ "id": 1, "title": "Post 1" },
{ "id": 2, "title": "Post 2" }
],
"headers": {
"X-Total-Count": "100",
"X-Page": "1",
"X-Per-Page": "2",
"Link": "</posts?page=2>; rel=\"next\""
}
}
}
}
}
🔄 CORS
O CORS está habilitado por padrão, permitindo requisições de qualquer origem. Isso torna o servidor pronto para uso em desenvolvimento frontend.
🐛 Debugging e Logs
O servidor exibe informações úteis no console:
📂 Modo pasta: Carregando arquivos JSON recursivamente...
📁 Carregado: users.json
📁 Carregado: api/orders.json
📚 Gerando documentação Swagger automaticamente...
📋 Endpoints disponíveis:
[GET] http://localhost:3000/users
[POST] http://localhost:3000/users
[GET] http://localhost:3000/api/orders
📚 Documentação Swagger:
[GET] http://localhost:3000/ (Interface Swagger UI)
[GET] http://localhost:3000/swagger.json (Especificação JSON)
📊 Total de endpoints: 3
🎉 Documentação automática gerada com sucesso!
💡 Dicas e Melhores Práticas
Organização de Arquivos
- Use modo pasta para projetos grandes
- Agrupe endpoints relacionados em pastas
- Use nomes descritivos para arquivos e pastas
- Mantenha estrutura consistente
Performance
- Evite arquivos JSON muito grandes
- Use headers de cache quando apropriado
- Organize endpoints por funcionalidade
Desenvolvimento
- Use parâmetros de path para endpoints dinâmicos
- Configure headers realistas para simular APIs reais
- Use cookies para simular autenticação e sessões
- Documente comportamentos especiais nos dados
Próximo passo: Explore exemplos específicos de Headers Mockados e Cookies Mockados! 🚀