Webhook vs APIs
Tags: webhook, python, ngrok, programming
Published: 2021-11-03 13:45:33

#Quer saber o que é um webhook e como funciona?

Imagine a facilidade e a praticidade que você terá usando o webhook, neste artigo iremos descrever o que webhook, como funciona e de bônus deixaremos um exemplo simples e prático usando python mas também pode ser utilizado em outras linguagens, deixarei referencias em outras linguagens para poder ajudar no seu estudo.

##O que é Webhook?

De acordo com o blog do [Vindi](https://blog.vindi.com.br/o-que-sao-webhooks/) "Webhook é uma forma de recebimento de informações, passadas quando um evento acontece. Dessa forma, o webhook, na prática, é a forma de receber informações entre dois sistemas de uma forma passiva. Além disso, o webhook (também conhecido como retorno de chamada web ou HTTP e, ainda, impulso API) é uma maneira prática para um app ou sistema fornecer outras aplicações com informações em tempo real. Da mesma forma, ele fornece dados para outros aplicativos, e são muito eficientes tanto para o prestador de serviço, como para o consumidor."

Simplificando, webhooks são eventos que acionam uma ação.

![webhook em ação](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n5c64liu91rcqqha8zgk.png) 

##Como funciona Webhook?

Então, supondo que você esteja criando um bot para o telegram, e você acaba criando uma API para isso, nesta API você tem uma rota que executa uma determinada ação do bot, com isso você precisa fazer o set Webhook na API do telegram para que quando for requisitado aquele Webhook, ele ira acionar a ação daquele determinado evento. 

![webhook vs API](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/usghu9bqpam8tp76s8ex.png)

Observando está imagem acima, você percebe que Webhook e APIs são duas comunicações totalmente diferente, enquanto a API ele pega os dados de um servidor, o Webhook puxa os seus dados. APIs estão em constante votação para obter as assinaturas.

![Diferença de votação](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mp0x19fu4fx8og64677b.png)

## Webhook, na prática

Neste exemplo prático iremos utilizar:

* [Python](https://www.python.org/)
* [Framework Flask](https://flask.palletsprojects.com/en/2.0.x/)

Vamos começar criando um servidor para receber o webhook.

![Servidor em Flask](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sk5t6qhol6xdfs29xubn.png)

Neste código, você observa que criamos apenas uma rota chamada '/webhook' do método do tipo 'POST', logo a nossa rota irá permitir requisição com este método. Com isso basta você executar dois comandos, o primeiro para escrever seu server como uma variável de ambiente e o outro para executar o server.

 No windows:

* set FLASK_APP='nomedoseuarquivo'.py
* flask run

No Linux:

* export FLASK_APP='nomedoseuarquivo'.py
* flask run

Após você ter criado um server, vamos agora criar um arquivo onde você irar enviar o seu webhook, o código ficaria desta forma.

![Send Webhooks](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kc0umm97by6y0bs97ef7.png)

Neste código, fizemos um exemplo de requisição, fazendo o envio do nosso webhook, finalizando nosso exemplo nesta etapa.

Repare que neste exemplo, usamos localhost, caso você deseje aplicar esses conhecimentos utilizando a API do telegram, por exemplo, você pode usar o [ngrok](https://ngrok.com/docs), pois o telegram não aceita localhost, então você pode utilizar o ngrok para isso, sendo que ele serve apenas para testar sua aplicação, não para ir em produção. Decorrerei sobre o ngrok em outro artigo, deixarei o link logo abaixo.

Este foi o <b>diário de bordo #06</b> vamos nos despedindo por aqui. Voltaremos com mais um diário de bordo.

<p align="center">
  <a href="#">
    <img src="https://cdn.dribbble.com/users/1889486/screenshots/5081642/thankyou_.gif" width="500">
  </a>
</p>

<b>Este artigo foi útil para você?</b> 
<b>Deixe um comentário abaixo.</b>