Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Webhook Site (local)

Receptor de webhooks para testes locais, no estilo do webhook.site. Recebe requisições HTTP em qualquer caminho/método, guarda em memória (com persistência em arquivo JSON) e mostra numa página web com auto-refresh e opção de excluir.

Sem banco de dados e sem dependências externas — usa apenas o Node.js nativo.

Pré-requisitos

  • Node.js 18 ou superior (node -v para conferir). Nada mais — sem npm install, sem banco de dados.
  • Git, para clonar.

1. Clonar

git clone https://github.com/claudiolp/webhook-site.git
cd webhook-site

2. Rodar

Escolha uma das opções abaixo.

Opção A — Manual (mais simples)

Bom para uso pontual: roda enquanto o terminal estiver aberto.

node server.js

Abra http://localhost:48080/ no navegador. Para parar, Ctrl+C no terminal.

Durante o desenvolvimento, para reiniciar sozinho ao salvar o código:

npm run dev   # node --watch server.js

Opção B — Tarefa Agendada do Windows (sempre no ar)

Bom para deixar rodando de forma permanente: inicia ao logon e reinicia sozinho se cair.

  1. Abra o PowerShell e vá até a pasta do projeto (cd ...\webhook-site).

  2. Registre a tarefa (vai pedir confirmação do UAC — aceite):

    powershell -ExecutionPolicy Bypass -File .\scripts\install-task.ps1
  3. Pronto — o servidor sobe imediatamente e a cada logon. Acesse http://localhost:48080/.

Comandos úteis:

Start-ScheduledTask -TaskName "WebhookSite"                    # iniciar manualmente
Stop-ScheduledTask  -TaskName "WebhookSite"                    # parar
Unregister-ScheduledTask -TaskName "WebhookSite" -Confirm:$false   # remover de vez

Como funciona: a tarefa lança um supervisor oculto (scripts/run-supervisor.vbs) que mantém o node server.js rodando e o reinicia em ~2s se ele cair. Logs em server.log.

A tarefa roda apenas quando o seu usuário está logado. Para rodar sem login (máquina compartilhada/servidor), seria necessário um Windows Service.

Porta

Padrão 48080 (escolhida para não colidir com 3000/8080 usados por outros devs). Troque com a variável PORT:

PORT=45000 node server.js

Como usar

Envie qualquer requisição para o servidor. O caminho e o método são livres — tudo que não for /, /index.html ou /api/requests* é registrado como webhook recebido.

curl -X POST "http://localhost:48080/meu-teste?x=1" \
  -H "Content-Type: application/json" \
  -d '{"evento":"pago","valor":10.5}'

Cada request registrado guarda: método, caminho, query string, headers, IP de origem, corpo bruto e o corpo já parseado como JSON (quando aplicável).

Página web

  • Lista os requests recebidos (mais recente no topo)
  • Atualiza automaticamente a cada 2s (checkbox "Auto-refresh")
  • Clique num item para ver headers, query e body
  • Botão Excluir por request e Limpar tudo

Resposta customizável

Por padrão o servidor responde 200 com um JSON. Dá para customizar o que ele devolve a cada webhook — útil para simular respostas específicas do sistema que está sendo testado.

Padrão global (persistido em response-config.json): edite pelo botão ⚙️ Resposta na página, ou via API:

curl -X PUT http://localhost:48080/api/response-config \
  -H "Content-Type: application/json" \
  -d '{"status":418,"contentType":"text/plain","body":"sou um bule"}'

Override por request (não altera a config global):

Onde Chave Efeito
query ?__status=404 Status HTTP da resposta
query ?__body=texto Corpo da resposta
query ?__delay=2000 Atraso em ms (máx. 30000)
header X-Mock-Status Status HTTP
header X-Mock-Content-Type Content-Type
header X-Mock-Delay Atraso em ms
curl -X POST "http://localhost:48080/teste?__status=503&__delay=1000"

API de gerenciamento

Método Rota Ação
GET /api/requests Lista todos os requests
DELETE /api/requests/:id Exclui um request pelo id
DELETE /api/requests Exclui todos
GET /api/response-config Lê a config de resposta
PUT /api/response-config Atualiza a config de resposta

Configuração (variáveis de ambiente)

Variável Padrão Descrição
PORT 3000 Porta do servidor
MAX_REQUESTS 500 Limite de requests mantidos (descarta antigos)

Persistência

Os requests ficam em memória e são gravados em requests.json (debounce de 200ms). Ao reiniciar, o servidor recarrega esse arquivo. Apagar o arquivo zera o histórico.

Licença

MIT © Claudio Pereira

About

Receptor local de webhooks para testes: recebe, exibe e permite excluir requisições HTTP. Node.js puro, sem dependências e sem banco.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages