Bài viết gần đây
-
-
Áp Dụng BOT Vào Phân Tích Và Đầu Tư Chứng Khoán Hiệu Quả
Tháng 2 15, 2026
| Hướng dẫn tạo Webhook server với Node.js & Express: Cực kỳ đơn giản
Được viết bởi thanhdt vào ngày 27/01/2026 lúc 23:26 | 32 lượt xem
Bạn đã hiểu Webhook là gì và sức mạnh của nó. Giờ là lúc chúng ta xắn tay áo lên và cùng nhau xây dựng một Webhook server thực sự bằng Node.js và Express.
Việc tạo ra một Endpoint có khả năng nhận, xử lý và phản hồi dữ liệu tức thời là bước đầu tiên để bạn làm chủ các hệ thống tự động hóa. Trong bài viết này, tôi sẽ hướng dẫn bạn từng bước từ cấu trúc thư mục đến cách test webhook chuyên nghiệp.
| Cấu trúc dự án | Mô tả |
|---|---|
app.js |
File chạy chính của server Express |
package.json |
Quản lý thư viện (Express) |
/logs |
Thư mục lưu trữ lịch sử Webhook (tùy chọn) |
1. Khởi tạo dự án & Cài đặt môi trường
Đầu tiên, hãy tạo một thư mục mới và khởi tạo dự án Node.js:
mkdir node-webhook-server
cd node-webhook-server
npm init -y
npm install express
2. Xây dựng logic nhận dữ liệu Webhook
Mọi Webhook server đều hoạt động dựa trên phương thức POST. Dữ liệu từ bên ngoài (thường là JSON) sẽ được gửi tới Endpoint mà chúng ta định nghĩa.
Hãy tạo file app.js với nội dung sau:
const express = require('express');
const app = express();
// Middleware cực kỳ quan trọng để đọc body JSON
app.use(express.json());
// Endpoint chính để nhận Webhook
app.post('/webhook', (req, res) => {
const payload = req.body;
// 1. Log dữ liệu để kiểm tra
console.log('--- Đã nhận Webhook mới ---');
console.log('Event Type:', payload.event);
console.log('Data:', JSON.stringify(payload, null, 2));
// 2. Xử lý logic nghiệp vụ
if (payload.event === 'order_completed') {
console.log('Xử lý đơn hàng ID:', payload.order_id);
}
// 3. Phản hồi HTTP 200 sớm cho Source (rất quan trọng)
res.status(200).send('OK');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server đang chạy tại http://localhost:${PORT}/webhook`);
});
[!IMPORTANT]
Hãy luôn phản hồi HTTP 200 (hoặc 2xx) ngay lập tức. Một số Source (như TradingView hay Stripe) sẽ liên tục gửi lại Webhook (Retry) nếu nó không nhận được phản hồi OK trong thời gian ngắn, gây quá tải server của bạn.
3. Test Webhook server bằng Postman
Vì server đang chạy ở Local, bạn có thể dễ dàng dùng Postman để giả lập các request giống hệt như thế giới thực gửi tới.

- Method: POST
- URL:
http://localhost:3000/webhook - Body: Chọn
rawvà định dạngJSON. - Payload ví dụ:
json
{
"event": "order_completed",
"order_id": 12345,
"amount": 500,
"currency": "USD"
}
Khi nhấn Send, bạn sẽ thấy thông tin Webhook hiện ra trong Terminal của Node.js.
4. Best Practices khi nhận Webhook
- Validate dữ liệu: Luôn kiểm tra xem cấu trúc JSON nhận được có đúng không.
- Xử lý bất đồng bộ: Nếu logic xử lý tốn thời gian (ví dụ: render video), hãy đưa nó vào một Queue (hàng đợi) và trả về 200 OK cho Source trước.
- Bảo mật: Hiện tại server đang “mở cửa” cho tất cả mọi người. Trong bài viết sau, chúng ta sẽ học cách bảo vệ nó.
Chúc mừng bạn đã tạo thành công Webhook server đầu tiên! Nhưng hãy cẩn thận, nếu một kẻ xấu gửi request giả tới endpoint này, hệ thống của bạn sẽ gặp nguy hiểm.
Bài tiếp theo: Bảo mật Webhook trong Node.js (Signature, Secret & IP Whitelist).
👉 Bảo mật Webhook trong Node.js: Signature, Secret & IP Whitelist
💡 Bạn muốn ứng dụng Webhook để nhận tín hiệu giao dịch từ TradingView?
Tham khảo ngay: Chiến lược xu hướng VIP – Tối ưu hóa lợi nhuận tự động