Executando verificação de segurança...
7

Técnico: Algumas Coisas Sobre Webhook

O Que É Webhook? 💁

  • De acordo com a Canaltech Web é:

"A web nada mais é do que o caminho que permite a você usufruir do conteúdo transferido pela internet."

  • Por curiosidade web é também o 3º w do www.
  • Hook: Tradução direta para "Gancho" ou "Anzol".
  • Webhook então diretamente signfica "Ganchos na Internet".
  • Também pode ser chamado de "HTTP Push API", "API Reversa", "HTTP Callback" ou "Web Callback".
  • Webhooks são hooks usados em serviços da web. 🌐

Para Que Serve O Webhook? 🐾

  • De acordo com Simon Fredsted em seu site:

O Webhook é a maneira da Web de integrar sistemas completamente diferentes nos tempos semi-real e real.

  • Fornecem ao seu app uma maneira de consumir novos dados de eventos de um endpoint.
  • Você fornece uma URL para o aplicativo que consumirá seu webhook.
  • Com os webhooks não é necessário que você e/ou uma ferramenta enviem um pedido para saber se uma ação ocorreu em outro software. A informação é enviada automaticamente.

Metáfora do Webhook! 📌

Pense que você colocou o leite para esquentar e precisa monitorar para ele não entornar e cair no fogão.

A cada um minuto você verifica o nível do leite.

Mas daí você pensa: Será mesmo que preciso ir consultar se o nível de leite está ok mesmo? Eu realmente preciso pegar um termômetro para medir se a temperatura do leite está ideal?

Você pode ter um dispositivo para te avisar quando isso acontecer, basta apenas que a temperatura ou o nível do leite atinjam um certo valor para você receber este alerta!

É aí que entra em jogo os webhooks!

Os dados trafegam de uma ferramenta para outra, sempre que uma ação ocorre. Sem intervalos de verificação, é instantâneo!

Quais Casos Os Webhooks Podem Ser Utilizados? 👌

  • Para automatização de tarefas.
  • Para obter logs de um sistema.
  • Para ter um feedback de alguma ação.
  • Para receber eventos variados.
  • Etc...

Um Pouco Mais De Técniques Sobre Webhook 👨‍💻

  • Webhooks são baseados em eventos.
  • Consumir um webhook significa enviar eventos para ele e o webhook fará seu trabalho.
  • Sempre que um novo evento ocorre no aplicativo, ele posta os dados do evento em sua URL especificada, atualizando seu aplicativo em tempo real.
  • Normalmente utilizado para fazer dois sistemas distintos se comunicarem e para passar longe do Polling em direção a um modelo de Publisher-Subscriber.
  • Polling é a capacidade de efetuar requisições ao sistema desejado de forma síncrona para saber se este sistema já completou determinada tarefa ou gostaria de emitir alguma mensagem, etc.
  • Publisher-Subscriber é a capacidade de separar a comunicação de maneira assíncrona... O publisher pode públicar uma mensagem e o subscriber ser notificado e receber esta mensagem.
  • Também podemos entender o webhook como o Design Pattern Observer, conforme @josefilho comentou:

O Webhook é o design pattern Observer em sua forma pura, aonde o conceito que seria aplicado dentro do domínio de classes é extrapolado para sistemas externos, aonde o Sujeito conhece seus Observadores e os notifica toda vez que um evento de interesse acontece.

Exemplos 😅

1 - Você pode postar mensagens no Slack através de uma URL.

2 - Você irá pedir ao vendedor de um tênis para avisar quando um determinado modelo estiver disponível em estoque. Assim libera o tempo de ambos os lados.

3 - Você tem a necessidade de ser informado quando o pagamento daquela compra do laptop surreal no seu ecommerce favorito for aprovado.

Como Testar Um Webhook? 🧪

  • Você pode testar um webhook clicando neste link -> https://webhook.site/
  • Neste site você pode inspecionar, testar e automatizar facilmente seu projeto com um webhook simples de usar
  • CUIDADO: Evite compartilhar dados sensíveis, nunca se sabe para onde e por qual lugar nossos dados preciosos estão trafegando 😊

Próximos Passos 👣

  • Comente quais pontos deixei passar sobre os Webhooks.
  • Bora crescer com sucessinho!!

Referências 🚀

Carregando publicação patrocinada...
2

@VictorManhani, muito legal. Eu ainda acrescentaria que o Webhook é o design pattern Observer em sua forma pura, aonde o conceito que seria aplicado dentro do domínio de classes é extrapolado para sistemas externos, aonde o Sujeito conhece seus Observadores e os notifica toda vez que um evento de interesse acontece. Essa lógica de inversão é muito massa. Valeu por compartilhar esses insights \0

1
2
2

Fico muito feliz que tenha gostado, aos poucos este post irá melhorar!

Pode deixar que falarei sobre este tema em um próximo post, muito obrigado pela recomendação!!! 😁

1

Victor, que publicação sensacional!

Quando trabalhava no Pagar.me, disponibilizar webhooks era uma feature fundamental!

E nessas horas, uma coisa que muita gente esquece de fazer é verificar a assinatura de um webhook para comprovar que esta chamada está vindo de um local autorizado a fazer ela.

Do contrário, qualquer pessoa que souber a URL do hook vai poder chamar ele com as informações que quiser, por exemplo, aprovando o pagamento de um pedido.

2

Fico muito feliz que tenha gostado mr. Deschamps 😊

Aos poucos este post irá melhorar ao seguir o padrão da melhoria contínua! 🚎

E muito obrigado pela recomendação, realmente a verificação da assinatura de um webhook é um passo muito importante no consumo deste webhook, por isso acredito que o modelo security-first é essencial para estes tipos de projetos.

Muito obrigado pelo adendo mais uma vez!!! 😁