{"id":3349,"date":"2023-01-30T01:23:39","date_gmt":"2023-01-30T04:23:39","guid":{"rendered":"http:\/\/www.55bet-pro.com\/pet\/sistemas-de-informacao\/?p=3349"},"modified":"2025-09-02T14:37:51","modified_gmt":"2025-09-02T17:37:51","slug":"webhooks","status":"publish","type":"post","link":"http:\/\/www.55bet-pro.com\/pet\/sistemas-de-informacao\/2023\/01\/30\/webhooks","title":{"rendered":"Webhooks"},"content":{"rendered":"\n
Ol\u00e1 pessoal, tudo bem? O PET-SI preparou mais uma reda\u00e7\u00e3o para voc\u00ea, nesta edi\u00e7\u00e3o o tema foi Webhooks e comunica\u00e7\u00e3o entre API\u2019s. Basicamente o Webhook pode ser imaginado literalmente como a sua tradu\u00e7\u00e3o prop\u00f5e Web <\/span>= Rede\/internet<\/span>, hook <\/span>= gancho<\/span>. Ou seja, Webhooks s\u00e3o como ganchos que ligam sistemas externos. Agora vamos entender melhor como isso ocorre e como \u00e9 interpretado pelos sistemas.<\/p>\n No mundo atual, \u00e9 comum lidarmos com v\u00e1rias ferramentas tecnol\u00f3gicas no nosso dia a dia de desenvolvimento em uma empresa, e todo esse cen\u00e1rio gera a necessidade de integra\u00e7\u00f5es e automatiza\u00e7\u00f5es para que seja poss\u00edvel otimizar o tempo e aumentar a utilidade dos sistemas. Em muitas ocasi\u00f5es, a posse da informa\u00e7\u00e3o n\u00e3o \u00e9 suficiente, \u00e9 necess\u00e1rio um tratamento da mesma. Sem as integra\u00e7\u00f5es e automatiza\u00e7\u00f5es as equipes precisam realizar o tratamento manualmente, por menores que sejam. Se imaginarmos um cen\u00e1rio de uma empresa em larga escala essa pr\u00e1tica se torna invi\u00e1vel, e se formos sinceros na an\u00e1lise, mesmo em pequena escala essa pr\u00e1tica produz uma tarefa trabalhosa.<\/p>\n Os Webhooks ou \u201cganchos da web\u201d, s\u00e3o gatilhos acionados a partir de um evento para transmitir informa\u00e7\u00f5es de um sistema para outro.<\/span><\/strong><\/em><\/p>\n Um Webhook \u00e9 um jeito de conectar dois sistemas e levar informa\u00e7\u00f5es de um para outro no momento exato em que um evento acontece, para que atrav\u00e9s desse recebimento de dados em tempo real, aconte\u00e7a uma a\u00e7\u00e3o de forma autom\u00e1tica.<\/p>\n<\/blockquote>\n \u00c9 semelhante a uma API convencional, por\u00e9m mais independente, porque para que ele cumpra seu papel, o usu\u00e1rio n\u00e3o precisa realizar pesquisas. Se algo muda em um aplicativo automaticamente o outro \u00e9 avisado.<\/p>\n<\/blockquote>\n No momento que uma informa\u00e7\u00e3o entra no sistema acionador (acesso a plataforma ou leitura de um e-mail, por exemplo) ele organiza esses dados e envia uma mensagem para a URL do webhook configurado, que notifica o sistema executor (o que vai realizar a a\u00e7\u00e3o).<\/p>\n<\/blockquote>\n Claro que o usu\u00e1rio decide como ele quer receber essas informa\u00e7\u00f5es. Desta forma \u00e9 poss\u00edvel configurar, por exemplo, o envio de e-mails espec\u00edficos a partir de um provedor quando um evento acontece em outro sistema, como pode ser o caso de um push como esse da Netflix que mencionei.<\/p>\n<\/blockquote>\n\n\n\n Provavelmente voc\u00ea j\u00e1 ouviu falar da Zapier, uma ferramenta que integra uma infinidade de aplicativos, certo? Com o Webhook da Zapier conectado a dois aplicativos diferentes, as informa\u00e7\u00f5es do primeiro sistema podem ser enviadas para o segundo sempre que acontece um evento.<\/p>\n<\/blockquote>\n Ou seja, sempre que uma nova informa\u00e7\u00e3o entra no primeiro aplicativo ele envia uma mensagem para a URL do Webhook da Zapier, que transfere os dados para os outros aplicativos previamente configurados.<\/p>\n<\/blockquote>\n Tecnicamente, os Webhooks s\u00e3o retornos de chamada HTTP definidos pelo usu\u00e1rio. As notifica\u00e7\u00f5es de sa\u00edda acontecem, geralmente, via HTTP POST. Os Webhooks permitem que voc\u00ea publique uma URL http: \/\/ ou http: \/\/ em que os dados possam ficar salvos, na maioria das vezes, nos formatos JSON, XML ou por dados de formul\u00e1rio.<\/p>\n<\/blockquote>\n Geralmente as plataformas interpretam esses dados e orientam a configura\u00e7\u00e3o dos Webhooks fazendo todo o trabalho de leitura das informa\u00e7\u00f5es para voc\u00ea. Em alguns casos o sistema ir\u00e1 te perguntar de que modo deseja ler esses dados. De qualquer modo, com alguns cliques voc\u00ea j\u00e1 pode ver uma integra\u00e7\u00e3o acontecendo.<\/p>\n<\/blockquote>\n\n\n\n Ainda na entrevista a Nearsoft, Jeff Lindsay disse que:<\/strong><\/em><\/p>\n \u201cA implica\u00e7\u00e3o mais interessante a longo prazo est\u00e1 no fato de serem acess\u00edveis ao usu\u00e1rio. Os Webhooks tornam muito mais f\u00e1cil fazer coisas program\u00e1ticas interessantes com aplicativos do que trabalhar com, por exemplo, uma API REST.\u201d<\/p>\n<\/blockquote>\n\n\n\n Imagine que voc\u00ea est\u00e1 em um restaurante aguardando por uma refei\u00e7\u00e3o, e por ventura o tel\u00e3o de pedidos est\u00e1 danificado. Te convidam a sentar para esperar o pedido e enquanto isso voc\u00ea come\u00e7a a conversar por mensagem com seus amigos. A coisa mais simples e inteligente que se pode fazer \u00e9 esperar at\u00e9 que seu nome seja chamado e, enquanto isso, fique entretido com a conversa no celular. Mas vamos imaginar um segundo caso, em que voc\u00ea \u00e9 uma pessoa impaciente e que a cada cinco minutos pergunta o andamento do pedido.<\/p>\n Todos sabemos que a segunda abordagem faz menos sentido, pelo fato de que pedir mais vezes o andamento do pedido n\u00e3o tornar\u00e1 o processo mais r\u00e1pido. E poder\u00e1 deix\u00e1-lo mais ansioso com a situa\u00e7\u00e3o.<\/p>\n O mesmo problema ocorre em muitos aplicativos de neg\u00f3cios quando n\u00e3o se sabe quando a resposta chegar\u00e1. Para resolver isso, esses aplicativos continuam perguntando, mesmo que isso n\u00e3o fa\u00e7a diferen\u00e7a em grande parte das vezes.<\/p>\n Nesses casos podemos pensar nos webhooks, uma solu\u00e7\u00e3o que v\u00eam para resolver problemas como esses. Essa decis\u00f5es de arquitetura podem ter um impacto de otimiza\u00e7\u00e3o significativo em seu projeto.<\/p>\n\n\n\n Um Webhook \u00e9 um produto onde usamos uma opera\u00e7\u00e3o HTTP POST para notificar um cliente. O cliente ser\u00e1 especificado geralmente definindo o endpoint HTTP que ser\u00e1 chamado sempre que um evento espec\u00edfico<\/strong> ocorrer.<\/p>\n Por que um m\u00e9todos POST? Pelo motivo de que esse m\u00e9todo permite que o servidor envie quaisquer dados dentro da solicita\u00e7\u00e3o do corpo da requisi\u00e7\u00e3o (JSON\/XML).<\/p>\n Por evento<\/strong>, podemos especificar alguns casos de uso, como por exemplo:<\/p>\n Basicamente, buscamos uma maneira eficiente de perguntar ao servidor desejado se alguma altera\u00e7\u00e3o ocorreu.<\/p>\n Vamos pegar o exemplo de uma sala de bate-papo na internet. Sem o uso dos webhooks, qual intervalo devemos usar para verificar se h\u00e1 novas mensagens? 1 minutos? 5 minutos? 1 hora? A resposta \u00e9 obviamente, depende. Algumas pessoas podem responder em 5 minutos, enquanto outras podem levar 10 horas para responder uma mensagem simples ou podem at\u00e9 responder em 10 segundos. Supondo que \u00e9 verificado se existem novas mensagens em uma m\u00e9dia de 10 minutos. Seria feito mais de 144 solicita\u00e7\u00f5es por dia, totalizando em m\u00e9dia 4.320 por m\u00eas. E tudo isso para apenas um usu\u00e1rio da sala de bate-papo. Usando webhook essas 4.320 solicita\u00e7\u00f5es seriam reduzidas para 1. Pois o servidor seria o respons\u00e1vel por notificar voc\u00ea.<\/p>\n\n\n\n Normalmente, voc\u00ea tem uma quantidade significativa de eventos e esse eventos ir\u00e3o acionar o processo de notifica\u00e7\u00e3o entre o aplicativo X e o seu.<\/p>\n Usando como exemplo o Github. A plataforma nos permite definir webhooks sem muito trabalho e complexidade.<\/p>\n Exemplos de alguns poss\u00edveis Webhooks:<\/p>\n S\u00f3 \u00e9 preciso criar um webhook no servidor, especificar qual endpoint deve ser alcan\u00e7ado e qual evento voc\u00ea deseja acionar tal mecanismo.<\/p>\n Exemplo pr\u00e1tico retirado do <link><\/p>\n Para exemplificar os conceitos explicados acima, usaremos os webhooks do GitHub.<\/p>\n Para evitar muito trabalho na configura\u00e7\u00e3o de um ambiente de aplicativo, vamos usar uma\u00a0solu\u00e7\u00e3o\u00a0sem servidor , o<\/a>\u00a0Azure Functions<\/a><\/strong><\/em>\u00a0.<\/p>\n Se \u00e9 a primeira vez que voc\u00ea ouve tal tecnologia, primeiro sugiro dar uma olhada no seguinte artigo:<\/p>\n http:\/\/medium.com\/geekculture\/what-a-heck-is-an-azure-function-e3ddd39c81cf<\/p>\n Nota: voc\u00ea pode usar facilmente o n\u00edvel gratuito do Azure caso n\u00e3o tenha uma assinatura.<\/p>\n<\/blockquote>\n \u00a0<\/p>\n Na ‘\u00a0pilha de tempo de execu\u00e7\u00e3o’,<\/strong><\/em>\u00a0selecione ‘\u00a0N\u00f3’.<\/strong><\/em>\u00a0Voc\u00ea \u00e9 livre para preencher os campos restantes como desejar de acordo com sua localiza\u00e7\u00e3o e assinatura.\u00a0Depois de preencher tudo, clique no bot\u00e3o\u00a0criar<\/strong><\/em>\u00a0.<\/p>\n<\/li>\n Clique em\u00a0‘Ir para o recurso’.<\/strong><\/em>\u00a0Na barra de menu do lado esquerdo, clique em\u00a0‘Fun\u00e7\u00f5es’ > ‘+ adicionar’.<\/strong><\/em> Voc\u00ea deve ser capaz de ver algo como:<\/p>\n<\/li>\n<\/ol>\n Selecione ‘\u00a0HTTP Trigger’<\/strong><\/em>\u00a0e d\u00ea um nome \u00e0 sua fun\u00e7\u00e3o.\u00a0Voc\u00ea pode deixar o\u00a0campo\u00a0‘N\u00edvel de autoriza\u00e7\u00e3o’<\/strong><\/em>\u00a0como ‘\u00a0Fun\u00e7\u00e3o’.<\/strong><\/em>\u00a0Clique\u00a0no bot\u00e3o\u00a0‘Adicionar’<\/strong><\/em>\u00a0.<\/p>\n<\/li>\n No campo\u00a0‘C\u00f3digo + Teste’<\/strong><\/em>\u00a0, insira o seguinte c\u00f3digo:<\/p>\n<\/li>\n<\/ol>\n Ap\u00f3s esses passos, nossa fun\u00e7\u00e3o est\u00e1 criada e pronta para ser utilizada.\u00a0Salve o c\u00f3digo inserido e vamos pass\u00e1-lo para as tarefas do GitHub.<\/p>\n 9. Clique na guia\u00a0‘Configura\u00e7\u00f5es’<\/span>\u00a0e depois em\u00a0‘Webhooks’.<\/span><\/p>\n \u00a0<\/p>\n 10. Clique em\u00a0‘Adicionar Webhook’.\u00a0<\/span>Uma p\u00e1gina de formul\u00e1rio semelhante deve aparecer.<\/p>\n URL de carga \u00fatil:<\/strong>\u00a0defina<\/em> o endpoint do \u00a0cliente POST<\/em> mencionado nas se\u00e7\u00f5es anteriores.<\/p>\n<\/li>\n Content-Type:<\/strong><\/em>\u00a0Selecione a\u00a0******op\u00e7\u00e3o ‘application\/json’.<\/strong><\/em><\/p>\n<\/li>\n Segredo:<\/strong><\/em><\/p>\n Esta \u00e9 uma forma de evitar comunica\u00e7\u00f5es indesejadas ao seu cliente.\u00a0Ao definir um segredo, o mesmo do lado do cliente e do lado do servidor, apenas ambos se entender\u00e3o.\u00a0Deixe o campo em branco para simplificar.<\/p>\n<\/li>\n Eventos:<\/strong><\/em>\u00a0 Selecione ‘Deixe-me selecionar eventos individuais’<\/strong><\/em> e vamos escolher os\u00a0‘Rel\u00f3gios’.<\/strong><\/em> Esse evento acionar\u00e1 o webhook sempre que seu reposit\u00f3rio obtiver uma estrela.<\/p>\n<\/li>\n<\/ul>\n Clique em\u00a0‘Adicionar Webhook’.<\/strong><\/em><\/p>\n\n\n\n A tarefa restante \u00e9 verificar se nosso webhook est\u00e1 funcionando conforme o esperado.<\/p>\n 2. No final da p\u00e1gina, em ‘\u00a0Entregas Recentes’<\/span>\u00a0selecione a mais recente e verifique a resposta.<\/p>\n E est\u00e1 feito!!<\/p>\n\n\n\n Ent\u00e3o \u00e9 isso pessoal, esta foi a nossa reda\u00e7\u00e3o sobre Webhooks. Lembrando que todo conte\u00fado deste artigo foi resumido e compilado a partir dos links encontrados na refer\u00eancia. O PET-SI espera que todo conte\u00fado compilado tenha sido de alguma forma \u00fatil e ajude nos trabalhos futuros!! at\u00e9 a pr\u00f3xima \ud83d\ude42 .<\/p>\n\n\n\n http:\/\/medium.com\/geekculture\/<\/a><\/p>\n http:\/\/holmes.app\/o-que-sao-webhooks<\/a><\/p>\n http:\/\/www.redhat.com\/en\/topics\/automation\/what-is-a-webhook<\/a><\/p>\nContextualizando<\/span><\/strong><\/h2>\n
Facilitando<\/strong><\/h2>\n
\n
\n
\n
\n
Exemplo pr\u00e1tico de Webhook<\/strong><\/h2>\n
Vamos entender melhor como o Webhook funciona na pr\u00e1tica?<\/strong><\/h3>\n
\n
\n
\n
\n
\n
Agora que j\u00e1 temos uma base te\u00f3rica do que s\u00e3o Webhooks, vamos rever os conceitos com uma vis\u00e3o pr\u00e1tica e t\u00e9cnica do que ocorre com esse \u201cganchos da web\u201d\u2026<\/strong><\/h2>\n
O que \u00e9 um Webhook?<\/h2>\n
\n
Como as intera\u00e7\u00f5es de webhooks funcionam?<\/strong><\/h2>\n
Como as intera\u00e7\u00f5es de webhooks funcionam?<\/h3>\n
\n
Vamos criar um exemplo pr\u00e1tico\u2026<\/h3>\n
\n
\n
\n
<\/p>\n\n
<\/p>\n\n
<\/p>\n\n
\n
<\/p>\n
<\/p>\n
<\/p>\n\n
\n
Testes<\/strong><\/h2>\n
\n
<\/p>\n
<\/p>\nConclus\u00e3o<\/strong><\/h2>\n
Refer\u00eancias<\/strong><\/h2>\n