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?

Những mẩu tin ngắn hàng ngày dành cho bạn
  • Mọi người đã nghe nói đến Jujutsu - jj - một dạng quản lý phiên bản cho mã nguồn (version control system) chưa? Có vẻ như nó đang nhận được nhiều sự quan tâm.

    Chờ xíu! Chẳng phải git đã quá tốt rồi sao? Thế thì chế ra thằng jj để làm gì nữa? Cũng hơi khó trả lời nhỉ? Mỗi công cụ sinh ra chắc chắn phải cải thiện hoặc khắc phục được nhược điểm của cái trước. Cho nên jj ắt hẳn phải làm được điều gì đó mà git chưa làm được nên mới nổi lên như vậy.

    Thật ra mình đã nghe nói đến jj từ vài tháng trước rồi, nhưng vào đọc thì toàn kiến thức cao siêu. Hoặc là đang mang nặng cái lối suy nghĩ của git vào trong đầu rồi nên chưa lĩnh hội ra được điều gì cả.

    Mình hay có kiểu cái gì đọc lần 1 mà không hiểu thì đọc tiếp lần 2, lần 2 không hiểu thì đọc tiếp lần 3... đến lần thứ n mà vẫn không hiểu thì bỏ. Cơ mà không phải là từ bỏ mà một thời gian sau đó quay lại đọc tiếp. Đến một lúc nào đó khả năng mình sẽ hiểu ra một ít vấn đề, thế mới tài 😆.

    Thì cái jj này có vẻ như nó đang mở ra được tính linh hoạt trong việc "cam kết" mã. Tưởng tượng bạn đang làm việc trên một dự án, đang ở nhánh này, muốn sang nhánh khác để sửa, nhưng mà lại đang viết dở ở nhánh này, thế là phải stash, rồi checkout, rồi commit, rồi merge hoặc rebase lại vào nhánh cũ... nhìn chung quá trình làm việc với git nghiêm ngặt đến mức cứng nhắc, cần nhiều thao tác để giải quyết một vấn đề, chưa kể cái cây commit (commit-tree) nữa thì ôi thôi, khỏi xem cho đỡ nhức mắt. Thế nên ông jj này đang làm cách nào đó để bạn khỏi cần phải quan tâm đến các nhánh luôn, sửa trực tiếp vào commit. Nghe ảo nhỉ 😂.

    Đấy mới lĩnh hội được đến đấy, hy vọng sau n lần đọc lại nữa mình sẽ viết được một bài chi tiết hơn về công cụ này.

    » Xem thêm
  • Gòi gòi tới công chiện gòi 🤤🤤🤤

    » Xem thêm
  • Không biết blog được dẫn nguồn từ trang cà phê nào hay sao mà vài ba hôm trở lại đây thấy nhiều người tìm kiếm cà phê thế không biết 🤔.

    Tìm cả cách pha với tìm cả loại hạt, khổ nỗi họ tìm lại không ra bài viết nào vì mình chưa có viết đến mấy trường hợp đó. Phải chăng là ý trời 😀🙏

    » 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

5 bài học sâu sắc

Mỗi sản phẩm đi kèm với những câu chuyện. Thành công của người khác là nguồn cảm hứng cho nhiều người theo sau. 5 bài học rút ra được đã thay đổi con người tôi mãi mãi. Còn bạn? Hãy bấm vào ngay!

Mỗi sản phẩm đi kèm với những câu chuyện. Thành công của người khác là nguồn cảm hứng cho nhiều người theo sau. 5 bài học rút ra được đã thay đổi con người tôi mãi mãi. Còn bạn? 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ịnh2 năm trước
Không cmt bằng hình ảnh được nhỉ
Trả lời
Avatar
Hương Trịnh2 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
Đã fix rồi nha bạn
Avatar
Xuân Hoài Tống2 năm trước
Ok bạn ơi mình thấy rồi, thanks b
Bấm hoặc cuộn mạnh để sang bài mới