Webhooks là các cơ chế gọi lại callback dùng HTTP do người dùng định nghĩa. Một webhook được kích hoạt bởi một biến cố, một sự kiện chẳng hạn như có một đoạn mã nguồn code được thêm vào trong kho lưu trữ repository hay một từ khóa quan trọng nào đó được gõ trong cửa sổ chat.
Một phần mềm ứng dụng sẽ hiện thực cơ chế webhook bằng cách gửi thông điệp POST đến một địa chỉ URL mà ở đó có một sự kiện cụ thể đang xảy ra. Webhooks cũng được gọi là API ngược (reverse API). Một cách chính xác hơn, một webhook cho phép chúng ta bỏ qua các bước trong chu kỳ request/response. Với webhook, chúng ta không cần thông điệp request nào. Một webhook sẽ gửi dữ liệu khi được kích hoạt.
Vì lý do bảo mật, các dịch vụ REST có thể thực hiện vài phép kiểm tra để xác định xem bên máy nhận có phải là hợp lệ hay không. Một tiến trình bắt tay đơn giản có thể đáp ứng yêu cầu này, nhưng cách làm này chỉ giúp xác thực có một chiều. Máy chủ có thể dùng một token duy nhất được tạo ra bởi server. Các token có thể được tạo ra hay thu hồi từ phía máy chủ thông qua giao diện đồ họa UI. Khi máy chủ gửi dữ liệu đến webhook URL, nó bao gồm luôn token trong HTTP header của thông điệp request. Webhook URL sẽ bao gồm cùng một giá trị token trong thông điệp trả lời của HTTP response. Theo cách này, máy chủ sẽ biết nó đang gửi đến các client hợp lệ chứ không phải là các client/đầu cuối không hợp lệ.
Các công cụ được dùng khi viết Webhooks
Chúng ta sẽ đặc biệt gặp khó khăn khi phát triển một ứng dụng dùng webhooks. Khi sử dụng một dịch vụ công cộng cung cấp webhooks, bạn sẽ cần một địa chỉ URL dạng công cộng. Thông thường thì chúng ta phát triển các ứng dụng trên máy tính cá nhân localhost và phần còn lại của thế giới không thể truy cập đến ứng dụng của chúng ta. Vậy làm thế nào chúng ta kiểm tra webhooks?
Công cụ ngrok (http://ngrok.com) là một công cụ miễn phí cho phép chúng ta tạo một đường hầm tunnel từ một URL đến ứng dụng mà chúng ta đang chạy cục bộ.
Một phần mềm ứng dụng sẽ hiện thực cơ chế webhook bằng cách gửi thông điệp POST đến một địa chỉ URL mà ở đó có một sự kiện cụ thể đang xảy ra. Webhooks cũng được gọi là API ngược (reverse API). Một cách chính xác hơn, một webhook cho phép chúng ta bỏ qua các bước trong chu kỳ request/response. Với webhook, chúng ta không cần thông điệp request nào. Một webhook sẽ gửi dữ liệu khi được kích hoạt.
Vì lý do bảo mật, các dịch vụ REST có thể thực hiện vài phép kiểm tra để xác định xem bên máy nhận có phải là hợp lệ hay không. Một tiến trình bắt tay đơn giản có thể đáp ứng yêu cầu này, nhưng cách làm này chỉ giúp xác thực có một chiều. Máy chủ có thể dùng một token duy nhất được tạo ra bởi server. Các token có thể được tạo ra hay thu hồi từ phía máy chủ thông qua giao diện đồ họa UI. Khi máy chủ gửi dữ liệu đến webhook URL, nó bao gồm luôn token trong HTTP header của thông điệp request. Webhook URL sẽ bao gồm cùng một giá trị token trong thông điệp trả lời của HTTP response. Theo cách này, máy chủ sẽ biết nó đang gửi đến các client hợp lệ chứ không phải là các client/đầu cuối không hợp lệ.
Các công cụ được dùng khi viết Webhooks
Chúng ta sẽ đặc biệt gặp khó khăn khi phát triển một ứng dụng dùng webhooks. Khi sử dụng một dịch vụ công cộng cung cấp webhooks, bạn sẽ cần một địa chỉ URL dạng công cộng. Thông thường thì chúng ta phát triển các ứng dụng trên máy tính cá nhân localhost và phần còn lại của thế giới không thể truy cập đến ứng dụng của chúng ta. Vậy làm thế nào chúng ta kiểm tra webhooks?
Công cụ ngrok (http://ngrok.com) là một công cụ miễn phí cho phép chúng ta tạo một đường hầm tunnel từ một URL đến ứng dụng mà chúng ta đang chạy cục bộ.