Webhook là gì?

3 min read

What is webhook?

1. Vì sao chúng ta cần webhook?

Hãy tưởng tượng bạn làm trong 1 dự án, công việc review code khi có pull request là công việc bắt buộc của tất cả các thành viên trong team. Mỗi lần có comment, bạn lại phải quay về Discord để báo cho đồng đội biết theo kiểu “Em ơi check review comment nhé!”, “Em ơi, merged pull rồi, verify lại bản build nhé!”. Công việc này dần trở nên nhàm chán và tốn thời gian khi số lượng dev trong team ngày một nhiều. Liệu chúng ta có thể tự động hóa nó không?
Đây là lúc nghiên cứu về webhook của github, thứ có thể trigger được các event commentsmerged pull sau đó gửi thông báo về Discord (hoặc bất kỳ máy chủ nào mà bạn muốn).

2. Webhook là gì?

Có nhiều cách mà các ứng dụng có thể giao tiếp với nhau để chia sẻ thông tin, trong số đó sẽ có polling và webhooks. Polling giống như gõ cửa nhà bạn bè của bạn và hỏi xem họ có đường (còn gọi là thông tin) không, nhưng bạn phải đi và hỏi mỗi khi bạn muốn nó. Webhook giống như ai đó ném một túi đường vào nhà bạn mỗi khi họ mua một ít. Bạn không cần phải hỏi – họ chỉ tự động ném nó qua mỗi khi có.

Webhook là một công nghệ tiện dụng cho nhu cầu triển khai phản ứng sự kiện trên website. Đây là một công cụ mang đến giải pháp cho ứng dụng server-side có thể thông báo cho ứng dụng từ phía client-side nếu xuất hiện sự kiện phát sinh trên máy chủ. Nhờ đó, ứng dụng client-side sẽ không cần phải check ứng dụng server-side hay hỏi liên tục nữa.

Webhook hay còn được gọi là Reverse APIs, còn khi trong ứng dụng client-side thì được gọi là ứng dụng server-side. Quá trình hoạt động của Webhook thường sẽ phụ thuộc vào phản ứng sự kiện. Ứng dụng server-sive có thể gọi ứng dụng client-side khi nào server-side có thông tin mới báo cho client.

3. Sử dụng webhook như thế nào?

Bước đầu tiên trong việc tiêu thụ một webhook là hãy đọc docs của nhà cung cấp, đảm bảo rằng họ có cung cấp webhook nhé 😀.

Sau đó là cung cấp cho nhà cung cấp một URL để gửi yêu cầu đến. Thường điều này sẽ được thực hiện thông qua API. Quay trở lại ví dụ ban đầu, client lúc này là Github, sẽ call request đến URL mà server (chúng ta) cung cấp, nhưng điều đặc biệt ở đây là API headers, params, body sẽ không phải do server thiếp lập mà server cần điều chỉnh cho phù hợp với request từ client.

Lưu ý khi tiêu thụ webhook:

  • Hãy đảm bảo rằng API của bạn chỉ được thiết kế cho bên dịch vụ sử dụng, và bất cứ bên nào khác request đều sẽ không hoạt động (Đặc biệt là tính năng liên quan đến thanh toán).
  • Mỗi request body event thường sẽ có 2 phần chính là event type và payload, các event type khác nhau có thể sẽ có payload khác nhau.
  • Thường webhook sẽ cung cấp dữ liệu cho server của bạn và ngừng quan tâm ngay sau đó. Điều này có nghĩa là nếu server bị lỗi thì webhook events nhận được trong thời gian đó sẽ không được xử lý, đồng nghĩa với việc bị mất dữ liệu.

4. Debug webhook

Việc debug một webhook đôi khi có thể phức tạp, vì webhook chủ yếu là không đồng bộ. Bạn phải kích hoạt chúng và chờ đợi, sau đó kiểm tra phản hồi. Chúng ta có thể điểm qua một vài phương pháp:

  • Hiểu những gì webhook cung cấp bằng cách xem kỹ docs của họ.
  • Giả lập các request bằng cách sử dụng một công cụ như cURL hoặc Postman.
  • Kiểm tra mã trực tiếp trên máy của bạn bằng cách sử dụng một công cụ expose local host -> public host (có thể dùng các tools như ngrok, cloudflare).

References: https://itzone.com.vn/vi/article/webhook-truyen-kyhoi-1-cac-khai-niem-co-ban
https://viblo.asia/p/webhooks-101-introduction-EoW4oxkxJml
https://mona.media/webhook-la-gi

Avatar photo

𝐌𝐄𝐙𝐎𝐍 – 𝐓𝐇𝐄 𝐔𝐋𝐓𝐈𝐌𝐀𝐓𝐄 𝐏𝐋𝐀𝐓𝐅𝐎𝐑𝐌 𝐅𝐎𝐑 𝐂𝐎𝐌𝐌𝐔𝐍𝐈𝐓𝐈𝐄𝐒 & 𝐁𝐔𝐒𝐈𝐍𝐄𝐒𝐒

Discord is a widely used communication platform, but is it truly the best solution for community and business management? While it excels in creating...
Avatar photo Ngan Ton Thuy
3 min read

𝐌𝐞𝐳𝐨𝐧 𝐯𝐬 𝐒𝐥𝐚𝐜𝐤 – 𝐖𝐡𝐢𝐜𝐡 𝐎𝐧𝐞 𝐄𝐧𝐡𝐚𝐧𝐜𝐞𝐬 𝐘𝐨𝐮𝐫 𝐁𝐮𝐬𝐢𝐧𝐞𝐬𝐬…

Both Mezon and Slack are powerful communication platforms, but which one is the right fit for your organization? Let’s compare their key features: 𝐔𝐬𝐚𝐠𝐞...
Avatar photo Ngan Ton Thuy
1 min read

𝐌𝐄𝐙𝐎𝐍 𝐂𝐀𝐌𝐏𝐔𝐒 𝐏𝐀𝐑𝐓𝐍𝐄𝐑 — 𝐄𝐦𝐩𝐨𝐰𝐞𝐫𝐢𝐧𝐠 𝐒𝐭𝐮𝐝𝐞𝐧𝐭-𝐋𝐞𝐝 𝐈𝐧𝐢𝐭𝐢𝐚𝐭𝐢𝐯

Mezon Campus Partner is an all-in-one program designed to support: – Student competitions – Career development initiatives – Student-led clubs and creative teams 𝐖𝐡𝐚𝐭...
Avatar photo Ngan Ton Thuy
44 sec read

Leave a Reply

Your email address will not be published. Required fields are marked *