Tất cả bài viết
Một yêu cầu webhook chảy từ các dịch vụ đám mây vào một laptop hiển thị bảng kiểm tra yêu cầu.
webhook debuggingStripeGitHublocal testing

Gỡ lỗi webhook cục bộ: hướng dẫn đầy đủ

Gỡ lỗi webhook cục bộ nên nhanh, có thể lặp lại và gần với hành vi production. Tuy nhiên hầu hết các nhóm vẫn deploy lên staging chỉ để trả lời những câu hỏi cơ bản: callback đã đến chưa, payload có hợp lệ không, và việc xác minh chữ ký có qua không?

Vấn đề khi chỉ kiểm thử webhook trên staging

Quy trình mặc định nghe quen thuộc: deploy lên staging, cấu hình endpoint nhà cung cấp, kích hoạt sự kiện, xem log, sửa mã, deploy lại. Mỗi vòng tốn thời gian và thêm nhiễu từ môi trường dùng chung.

Khi mục tiêu của bạn là xác thực logic handler, tính idempotent hoặc việc parse payload, gánh nặng đó là không cần thiết. Bạn cần một cách đáng tin cậy để gỡ lỗi webhook cục bộ trong khi giữ toàn quyền kiểm soát stack phát triển của mình.

Bạn cần gì để kiểm thử webhook trên localhost

Để nhận callback của nhà cung cấp trên máy của bạn, ba phần phải khớp với nhau:

  • Một ứng dụng cục bộ đang chạy với các route webhook được bật.
  • Một endpoint HTTPS công khai ánh xạ tới ứng dụng đó.
  • Khả năng quan sát yêu cầu: header, body, trạng thái và độ trễ.

Đây chính xác là điều tunnel localhost mang lại: một cây cầu an toàn từ dịch vụ bên ngoài tới tiến trình cục bộ của bạn.

Từng bước: gỡ lỗi webhook cục bộ với PortPreview

  1. Khởi chạy ứng dụng cục bộ ở cổng mục tiêu.
  2. Chạy npx portpreview 3000 để tạo một URL tunnel.
  3. Dán URL HTTPS vào bảng điều khiển nhà cung cấp (Stripe, GitHub, Twilio, Slack, v.v.).
  4. Kích hoạt sự kiện thử nghiệm và kiểm tra từng callback theo thời gian thực.
  5. Phát lại các yêu cầu đã bắt bằng phát lại webhook để xác thực bản sửa mà không cần kích hoạt lại hệ thống thượng nguồn.

PortPreview giữ nguyên header gốc, nên việc kiểm tra chữ ký của nhà cung cấp vẫn có ý nghĩa trong khi kiểm thử cục bộ.

Danh sách kiểm tra gỡ lỗi webhook theo nhà cung cấp

Kiểm thử webhook Stripe cục bộ

Xác minh việc định tuyến theo loại sự kiện, khóa idempotency và xác thực chữ ký bằng các sự kiện chế độ thử nghiệm của Stripe. Bắt body payload thô để xác nhận handler của bạn parse đúng các object lồng nhau. Xem hướng dẫn riêng về kiểm thử webhook Stripe cục bộ.

Gỡ lỗi webhook GitHub

Xác thực header gửi, bộ lọc sự kiện và đường dẫn ủy quyền theo repository. Phát lại các lần gửi để kiểm thử việc xử lý sự kiện trùng khi GitHub thử lại các endpoint thất bại. Thiết lập đầy đủ trong kiểm thử webhook GitHub cục bộ.

Twilio và callback nhắn tin

Kiểm tra payload form-encoded và thời gian phản hồi. Gỡ lỗi cục bộ giúp phát hiện hành vi timeout và thử lại trước khi có lưu lượng production. Xem hướng dẫn riêng về kiểm thử webhook Twilio cục bộ.

Thực hành tốt để kiểm thử webhook cục bộ đáng tin cậy

Xác minh chữ ký ở chế độ cục bộ. Đừng bỏ qua các kiểm tra bảo mật trong quá trình phát triển; hãy kiểm thử cùng đường dẫn mã bạn chạy ở production.

Mô phỏng thử lại và trùng lặp. Nhà cung cấp có thể gửi cùng một sự kiện nhiều lần. Công cụ phát lại giúp xác nhận handler của bạn vẫn idempotent.

Bắt lịch sử yêu cầu. Giữ log về method, path, header và hình dạng payload cho mỗi callback trong quá trình làm tính năng.

Giảm việc deploy staging dồn dập. Dùng gỡ lỗi webhook cục bộ để lặp nhanh, rồi chạy các kiểm tra tích hợp cuối cùng trên staging trước khi phát hành.

Khi nào chuyển từ gỡ lỗi cục bộ sang staging

Tunnel cục bộ lý tưởng cho việc phát triển handler và kiểm tra payload. Chuyển sang staging cho các kiểm tra theo môi trường như secret được quản lý, chính sách mạng và pipeline phát hành đầy đủ.

Với việc phát triển callback hằng ngày, tunnel localhost cho phản hồi nhanh hơn với ít gánh nặng hạ tầng hơn. Nếu bạn đang so sánh công cụ, hãy xem hướng dẫn thay thế ngrokso sánh PortPreview với localtunnel tập trung vào kiểm tra yêu cầu và tính minh bạch mã nguồn mở.

Tham gia danh sách chờ của PortPreview để được truy cập sớm các quy trình tunnel ưu tiên webhook.

Câu hỏi thường gặp

Vì sao nhà cung cấp webhook không thể tiếp cận localhost?
Nhà cung cấp webhook gửi yêu cầu qua internet công cộng. Các địa chỉ localhost như 127.0.0.1 chỉ truy cập được trên máy của bạn, nên nhà cung cấp cần một URL công khai chuyển tiếp tới máy chủ cục bộ của bạn.
Làm sao kiểm thử webhook Stripe cục bộ?
Chạy ứng dụng cục bộ, khởi động một tunnel với PortPreview, rồi đặt endpoint webhook Stripe thành URL HTTPS được tạo. Kích hoạt sự kiện thử nghiệm và kiểm tra từng lần gửi trong log yêu cầu.
Tôi có thể gỡ lỗi webhook mà không deploy lên staging không?
Có. Gỡ lỗi webhook cục bộ với một tunnel thay thế hầu hết các lần deploy staging tạm thời để kiểm thử callback, giảm thời gian lặp từ vài phút xuống vài giây.