Webhook là gì? Sử dụng webhook trong những trường hợp nào?

Webhook là gì? Sử dụng webhook trong những trường hợp nào?

Tin ngắn hàng ngày dành cho bạn
  • Đợt trước có nhắc đến openai/codex - một dạng agent nhưng chạy trong Terminal rất tiện lợi đến từ nhà OpenAI, đặc biệt đây là mã nguồn mở và đến nay họ đã hỗ trợ thêm các nhà cung cấp khác thay vì chỉ sử dụng model chatgpt như trước.

    Mới đây Anthropic cũng đã giới thiệu Claude Code gần như Codex, chỉ có điều không phải là mã nguồn mở và buộc phải sử dụng API của họ. Vì không có tiền trải nghiệm nên chỉ nghe nói dân trình khen nó quá trời, có khi còn bá hơn cả Cursor. Đổi lại là nguy cơ cháy ví bất kỳ lúc nào 😨

    » Xem thêm
  • Từ lâu rồi suy nghĩ làm thế nào để tăng sự hiện diện thương hiệu, cũng như người dùng cho blog. Nghĩ đi nghĩ lại thì chỉ có cách chia sẻ lên mạng xã hội hoặc trông chờ họ tìm kiếm, cho đến khi...

    In cái áo này được cái tắc đường khỏi phải lăn tăn, càng đông càng vui vì hàng trăm con mắt nhìn thấy cơ mà 🤓

    (Có tác dụng thật nha 🤭)

    » Xem thêm
  • Một vòng của sự phát triển nhiều dự án khá là thú vị. Tóm tắt lại trong 3 bước: Thấy một cái gì đó phức tạp -> Làm cho nó đơn giản đi -> Thêm thắt tính năng cho đến khi nó phức tạp... -> Quay trở lại vòng lặp mới.

    Tại sao lại như vậy? Để mình lấy 2 ví dụ cho các bạn thấy.

    Markdown ra đời với mục tiêu tạo ra một định dạng văn bản thô "dễ viết, dễ đọc, dễ dàng chuyển thành một dạng gì đó như HTML". Vì thời đó chẳng ai đủ kiên nhẫn mà vừa ngồi viết vừa thêm định dạng cho văn bản hiển thị ở trên web như thế nào. Ấy vậy mà giờ đây người ta đang "nhồi nhét" hoặc tạo ra các biến thể dựa trên markdown để bổ sung thêm nhiều định dạng mới đến mức... chẳng nhớ nổi hết cú pháp.

    React cũng là một ví dụ. Từ thời PHP, việc khát khao tạo ra một cái gì đó tách biệt hẳn giao diện người dùng và phần xử lý logic chính của ứng dụng thành 2 phần riêng biệt cho dễ đọc, dễ viết. Kết quả là các thư viện UI/UX phát triển rất mạnh mẽ, mang lại khả năng tương tác với người dùng rất tốt, còn phần logic ứng dụng thì nằm ở một máy chủ riêng biệt. Bộ đôi Front-end, Back-end cũng từ đấy mà thịnh hành, không thể thiếu anh bồi bàn REST API. Ấy vậy mà giờ đây React trông cũng không khác biệt gì so với PHP là mấy, kéo theo là cả Vue, Svelte... lại cùng quy tất cả về một mối.

    Cơ mà không phải vòng lặp là xấu, ngược lại vòng lặp này mang tính tiến hoá nhiều hơn là "cải lùi". Nhiều khi lại tạo ra được cái hay hơi cái cũ thế là người ta lại dựa trên cái hay đó để tiếp tục lặp. Nói cách khác là chắc lọc tinh hoa từng tí một tí một á 😁

    » Xem thêm

Webhook là gì?

Webhook (còn được gọi là web callback hoặc HTTP push API) là một cách để một hệ thống cung cấp thông tin cho các các hệ thống khác thông tin theo thời gian thực (realtime). Webhook cung cấp dữ liệu đến các hệ thống khác dựa trên sự kiện vừa xảy ra, nghĩa là bạn nhận được dữ liệu ngay lập tức mà không giống như cách gọi API thông thường, khi bạn cần phải gọi API thường xuyên để lấy dữ liệu trong thời gian thực. Điều này làm cho webhook hiệu quả hơn nhiều cho cả nhà cung cấp dịch vụ và hệ thống của bạn. Hạn chế duy nhất của webhook là triển khai kết nối ban đầu.

webhook là gì

Cho dễ hình dung, hãy nhìn vào hình ảnh trên về việc so sánh giữa webhook và API. Trong khi webhook nhận được dữ liệu tự động từ server thì API phải liên tục gửi yêu cầu để nhận về dữ liệu.

Webhook đôi khi được gọi là "Reverse APIs", vì chúng cung cấp cho bạn các thông số và bạn phải thiết kế một API cho webhook sử dụng. Webhook sẽ thực hiện một HTTP request đến ứng dụng của bạn (thường là POST) bao gồm tất cả những thông số đó.

Sử dụng webhook

Thông thường bạn sẽ phải cung cấp một URL cho nhà cung cấp dịch vụ webhook để họ gửi yêu cầu đến. Thường được thực hiện thông qua trang quản lý hoặc thông qua một API. Điều này đồng nghĩa việc bạn cũng cần phải triển khai một URL trong hệ thống của mình để cho webhook có thể gọi đến.

Phần lớn các webhook sẽ gửi lại dữ liệu cho bạn theo một trong hai cách là dữ liệu dưới dạng JSON (phổ biến) hoặc XML (ít phổ biến hơn). Nhà cung cấp webhook sẽ cho bạn biết cách họ cung cấp dữ liệu thông qua trang tài liệu.

Sử dụng webhook trong những trường hợp nào?

Webhook đang được sử dụng rộng rãi bởi các nền tảng hệ thống lớn trên Internet. Lấy ví dụ như Facebook Page, họ cung cấp webhook để gửi các sự kiện khi có người dùng dùng thích, theo dõi trang, bình luận hay thậm chí là nhắn tin đến hệ thống mà bạn đăng kí lắng nghe những sự kiện đó. Hay như Zalo cũng cung cấp webhook để xử lý những xự kiện tương tự như vậy trên Zalo Page của họ.

Tóm lại những nền tảng hỗ trợ tích hợp hệ thống của bạn vào hệ thống của họ thông thường sẽ thông qua webhook. Vì thế khi thực hiện việc tích hợp nhiều khả năng là bạn sẽ làm việc thông qua webhook.

Bảo mật

Việc triển khai một URL trong hệ thống của bạn để cung cấp cho webhook có khả năng người khác có thể tìm thấy URL đó và sau đó giả mạo yêu cầu đến khiến cho hệ thống của bạn hoạt động sai. Để ngăn điều này xảy ra, bạn có thể sử dụng một số kỹ thuật ngăn chặn. Điều dễ dàng nhất là cung cấp URL https. Sau đó bạn có thể tiếp tục thực hiện những điều sau:

  • Cách đầu tiên và được hỗ trợ nhiều nhất để bảo mật webhook là thêm mã thông báo (token) vào URL, ví dụ: ?auth=token.
  • Lựa chọn tiếp theo là triển khai Basic Auth, cách này cũng được sử dụng rộng rãi và rất dễ thực hiện.
  • Hai giải pháp đầu tiên hoạt động hiệu quả để ngăn chặn hầu hết các cuộc tấn công nhằm vào webhook, tuy nhiên chúng có nhược điểm là phải gửi mã xác thực cùng với yêu cầu. Một lựa chọn thứ ba là yêu cầu nhà cung cấp dịch vụ webhook ký (sign) vào mỗi yêu cầu mà họ gọi đến hệ thống của bạn và sau đó bạn sẽ là người xác minh chữ ký đó. Cách triển khai này phức tạp hơn một chút và tôi sẽ sắp xếp thời gian để viết một bài hướng dẫn triển khai cách này với vai trò nhà cung cấp dịch vụ webhook.

Một số lưu ý

Có một số điều cần lưu ý khi cung cấp URL hệ thống của bạn sử dụng cho dịch vụ webhook:

  • Webhooks cung cấp dữ liệu đến hệ thống của bạn thông qua một HTTP request. Điều này có nghĩa là nếu hệ thống của bạn gặp lỗi, dữ liệu webhook gửi đến cho bạn có thể bị mất. Nhiều webhook sẽ chủ động gửi lại yêu cầu nếu phát hiện ra hệ thống của bạn đang bị lỗi. Do đó hãy đọc thật kĩ tài liệu của nhà cung cấp dịch vụ webhook để biết thêm chi tiết cách mà họ xử lý các yêu cầu HTTP đến hệ thống của bạn.
  • Khi sự kiện xảy ra liên tục, webhook có thể thực hiện các HTTP request liên tục. Hãy đảm bảo hệ thống của bạn có thể chịu được điều này trong triển khai.

Tổng kết

Webhook là một cách để một hệ thống cung cấp thông tin cho các các hệ thống khác thông tin theo thời gian thực thay vì phải gọi API một cách liên tục. Hầu hết các webhook hoạt động dựa trên sự kiện (event) để thông báo đến hệ thống đã đăng ký bằng cách gọi một HTTP request.

Hiện tại hầu hết các nền tảng dịch vụ lớn trên mạng Internet đều cung cấp webhook để dễ dàng tích hợp với hệ thống ứng dụng của bạn. Bên cạnh đó cũng cần chú ý đến việc bảo mật webhook và cách triển khai webhook.

Tham khảo:

Cao cấp
Hello

Bí mật ngăn xếp của Blog

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (2)

Nội dung bình luận...
Avatar
Hương Trịnh3 năm trước

Không cmt bằng hình ảnh được nhỉ

Trả lời
Avatar
Hương Trịnh3 năm trước

Ad ơi bị lỗi giao diện trên mobile rồi kìa :))

Trả lời
Avatar
Xuân Hoài Tống2 năm trước

Ok bạn ơi mình thấy rồi, thanks b

Avatar
Xuân Hoài Tống2 năm trước

Đã fix rồi nha bạn