Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»Criando um Webhook para receber requisições genéricas com asp.net

    Criando um Webhook para receber requisições genéricas com asp.net

    Jhonathan SoaresBy Jhonathan Soares10 de abril de 20192 Mins Read Asp.net
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    WebHooks é um padrão HTTP leve, fornecendo um modelo simples de pub/sub para conectar os serviços de SaaS e APIs da Web. Quando ocorre um evento em um serviço, uma notificação é enviada na forma de uma solicitação HTTP POST para assinantes registrados. Webhooks permitem criar integrações que comunicam eventos ocorridos no decorrer do tempo. Quando um evento ocorre, o sistema notifica a sua aplicação (no caso o webhook que estaremos criando) imediatamente, através de uma requisição HTTP POST para a URL do webhook.

    Pollings vs Webhooks

    Com webhooks sua aplicação não precisa ficar executando pollings (consultas de tempos em tempos) na API cliente/fornecedora. Um webhook é disparado automaticamente quando ocorrer um novo evento.

    Pollings e webhooks tem o mesmo objetivo, porém eles são muito mais eficientes, pois só transferem dados quando há uma atualização no recurso esperado. Segundo o Zapier, mais de 98,5% das requisições que realizam pollings são desperdiçadas. Isso significa que pollings geram, em média, 66x mais requisições do que webhooks.

    Fonte: <a href="https://blog.cloud-elements.com/webhooks-vs-polling-youre-better-than-this" target="_blank" rel=https://blog.cloud-elements.com.”/>

    A finalidade de WebHooks de ASP.NET da Microsoft é torná-la mais simples e mais consistente para conectar sua API sem gastar muito tempo descobrindo como lidar com qualquer variante específico de WebHooks.

    Bom, primeiramente você deve criar um projeto web API com .NET. E após isto instalar os seguintes packages:

    • Microsoft.AspNet.WebHooks.Common
    • Microsoft.AspNet.WebHooks.Custom
    • Microsoft.AspNet.WebHooks.Receivers
    • Microsoft.AspNet.WebHooks.Receivers.Generic

    Após o projeto criado, você deve realizar uma série de configurações:

    1º Adicione a configuração no seu arquivo de configurações da API :

      // adicionar no WebApiConfig.cs
      public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
    
            // Web API routes
            config.MapHttpAttributeRoutes();
    
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
            config.InitializeReceiveCustomWebHooks(); //<<<---
        }

    2º Adicione a configuração no seu web.config:

       <appSettings>
        
        <!-- Adicione essa chave no seu web.Config
             O valor pode ser outro, cada webhook tem o seu
         --!>
        <add key="MS_WebHookReceiverSecret_GenericJson" value="83699ec7c1d794c0c780e49a5c72972590571fd8"/> 
      </appSettings>
      

    3º Crie uma nova controller, herdando da classe WebHookHandler. Esta controller será onde todo o webhook processará a requisição:

       public class GenericJsonWebHookHandler: WebHookHandler
        {
    
            public GenericJsonWebHookHandler()
            {
                this.Receiver = GenericJsonWebHookReceiver.ReceiverName;
            }
    
            public override Task ExecuteAsync(string receiver, WebHookHandlerContext context)
            {
                try
                {
                     // Get JSON from WebHook
                    JObject data = context.GetDataOrDefault<JObject>();
    
                    // Get the action for this WebHook coming from the action query parameter in the URI
                    string action = context.Actions.FirstOrDefault();
    
                }
                catch (Exception)
                {
    
                    throw;
                }
                
                return Task.FromResult(true);
              
            }
        }

    Pronto, o seu webhook já está configurado para receber requisições em genéricas em Json. URL padrão será: http://host/
    /api/webhooks/incoming/genericjson?code=83699ec7c1d794c0c780e49a5c72972590571fd8

    Lembrando que o parametro code, é o código que configuramos no web.config.

    Leia mais sobre o assunto: https://docs.microsoft.com/pt-br/aspnet/webhooks/receiving/receivers


    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    Boas práticas de criação, armazenamento e validação de senhas em .NET

    Asp.net Boas práticas 9 de julho de 20248 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile