From c99999fb7bdc96cb7feb7196d7c1b121f4526310 Mon Sep 17 00:00:00 2001 From: Chris Woodruff Date: Fri, 13 Dec 2024 20:23:03 -0500 Subject: [PATCH] added diagram to chapter 14 --- Chapter14/Images/WebHook-Lifecycle-Diagram.png | Bin 0 -> 28806 bytes Chapter14/chapter14.md | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 Chapter14/Images/WebHook-Lifecycle-Diagram.png diff --git a/Chapter14/Images/WebHook-Lifecycle-Diagram.png b/Chapter14/Images/WebHook-Lifecycle-Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0a55f1e805b724c921de66f758231f29381b80 GIT binary patch literal 28806 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 MNGOQch#Cd{A9{>NQUCw| literal 0 HcmV?d00001 diff --git a/Chapter14/chapter14.md b/Chapter14/chapter14.md index be7c4176..da13c46f 100644 --- a/Chapter14/chapter14.md +++ b/Chapter14/chapter14.md @@ -43,6 +43,10 @@ On the flip side, receivers are the reactive heroes of the ecosystem. A receiver At its heart, a WebHook is a simple yet powerful conversation between two systems. The sender initiates this conversation when a specific event occurs—think of it as saying, _'Hey, something just happened!'_ This is done by sending an HTTP POST request to a designated URL provided by the receiver. The payload of this request contains all the details the receiver needs to understand the event and decide what to do next. This proactive approach eliminates the need for constant polling, making WebHooks a highly efficient mechanism for real-time communication. +![](Images/WebHook-Lifecycle-Diagram.png) + +
WebHook Lifecycle Diagram
+ The WebHook lifecycle begins with the sender detecting an event, such as a new user signing up, placing an order, or uploading a file. The sender then compiles the relevant event data into a structured payload, typically formatted in JSON for maximum interoperability. This payload and additional headers for identification and security are sent to the receiver's WebHook endpoint. Upon receiving the request, the receiver processes the payload and executes any necessary actions, such as updating a database, sending a notification, or triggering a downstream API call. What makes this interaction seamless in .NET is the enhanced support for HTTP communication and payload handling. With the refined capabilities of `HttpClient` for senders and ASP.NET Core's robust middleware for receivers, crafting efficient WebHook interactions becomes straightforward. The beauty of this conversation is its flexibility—whether you're sending notifications across microservices, integrating with third-party APIs, or enabling user-defined workflows, WebHooks adapts to your needs. By mastering how they work, you unlock a powerful tool to keep your applications connected and responsive in today's fast-paced digital world.