O que é um webhook, e como testar um com curl

Um webhook é um endereço na internet que recebe um aviso quando acontece alguma coisa noutra aplicação. Em vez de perguntar de minuto a minuto «já há novidades?», a aplicação bate à porta e entrega os dados. Pode testar qualquer webhook com o curl, um programa de linha de comandos que faz pedidos HTTP.

Como funciona

Papel Quem O que faz
Emissor A aplicação onde acontece o evento (uma loja, um formulário, um serviço de pagamentos). Quando algo acontece, envia um pedido para um endereço que lhe indicou, em geral com os dados em JSON.
Receptor O seu programa (o n8n, um ficheiro PHP no seu site, uma aplicação). Tem um endereço público, lê o pedido e responde com um código de estado.
Resposta O receptor. Um código como 200 diz «recebi». Muitos emissores tentam de novo se não o receberem.

Testar com curl, passo a passo

1 Tenha o endereço do webhook. Tem de ser público e, em geral, em HTTPS. Um endereço localhost não serve: o emissor, na internet, não chega ao seu computador.
2 Um pedido simples, para ver se o endereço responde: curl -i https://n8n.asuaempresa.ao/webhook/o-seu-caminho. O -i mostra o código e os cabeçalhos da resposta.
3 Um pedido com dados, como o emissor enviaria: curl -i -X POST https://n8n.asuaempresa.ao/webhook/o-seu-caminho -H "Content-Type: application/json" -d '{"nome":"teste"}'.
4 Leia o código da resposta na tabela abaixo.
5 Veja se o receptor registou o pedido. No n8n, na lista de execuções; no seu código, no registo de erros.

O que o código quer dizer

Código Significa
200 ou 201 Recebido. Se o resto falha, é dentro do receptor.
301 ou 302 O endereço redirecciona. Muitos emissores não seguem redirecções: use o endereço final.
401 ou 403 Falta autenticação, ou uma firewall barrou. Veja porque o IP é bloqueado.
404 Esse caminho não existe. Num n8n, quase sempre é o endereço de teste fora de uso ou o fluxo inactivo: webhooks do n8n.
405 O método está errado (GET em vez de POST, ou o contrário).
500 O receptor recebeu e rebentou. Veja o erro do lado dele. erros de sites.
502 ou 504 Um proxy no meio não chegou ao receptor, ou este demorou demasiado.

Sem resposta nenhuma, o problema está antes: o nome do domínio, a porta ou a firewall. Veja que portas estão abertas.

Um webhook aberto é uma porta aberta. Quem souber o endereço pode enviar-lhe o que quiser. Confira sempre quem enviou (um segredo no cabeçalho, uma assinatura) antes de agir, e nunca confie no conteúdo como se fosse seu. E prepare-se para receber o mesmo aviso duas vezes: os emissores repetem.
Pode receber webhooks num site comum: um ficheiro PHP que lê o corpo do pedido (php://input) e o guarda ou trata. Para fluxos entre várias aplicações é mais cómodo um n8n, num VPS; veja o que é o n8n. Para os da Meta, webhooks da Meta.

Precisa de um servidor com endereço público para receber webhooks?

Ver os servidores VPS

VEJA TAMBÉM

Webhooks do n8n: endereço de teste e de produção

Receber mensagens: webhooks da Evolution API

Erros de sites: 500, 403, 404, 508 e o que fazer

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?