Ответ
Вебхук (Webhook) — это механизм обратного вызова на основе HTTP, реализующий модель "push-уведомлений". При наступлении события в системе-источнике (например, новый коммит в репозитории) она отправляет HTTP-запрос (обычно POST с JSON-телом) на заранее заданный URL системы-получателя.
| Сравнение с API-запросом: | Аспект | Классический API (Polling) | Вебхук (Push) |
|---|---|---|---|
| Инициатор | Клиент опрашивает сервер. | Сервер уведомляет клиента. | |
| Эффективность | Частые пустые опросы тратят ресурсы. | Данные отправляются только при событии. | |
| Реальное время | Задержка равна интервалу опроса. | Минимальная задержка. |
Пример обработки вебхука на Node.js:
app.post('/github-webhook', express.json(), (req, res) => {
const signature = req.headers['x-hub-signature-256'];
// 1. ВАЖНО: Проверить подпись для безопасности
if (!verifySignature(signature, req.body)) {
return res.status(401).send('Invalid signature');
}
// 2. Обработать событие
const event = req.headers['x-github-event'];
if (event === 'push') {
console.log(`New push to: ${req.body.repository.full_name}`);
// Запустить сборку или тесты...
}
res.status(200).end(); // Всегда отвечать успешно
});
Типичные сценарии использования: уведомления об оплате (Stripe), запуск CI/CD (GitHub/GitLab), синхронизация данных (Slack), обновления чат-ботов.
Ответ 18+ 🔞
А, слушай, вебхуки, блядь! Это ж такая штука, когда система, вместо того чтобы ты её по сто раз на дню дергал, сама прибегает и кричит: «Э, сабака сука, у меня тут событие случилось, держи!»
Представь, ты сидишь, чай пьёшь, а тебе в дверь почтальон стучится с посылкой. Это и есть вебхук. А классический API — это ты сам, как охуевший, каждые пять минут бегаешь на почту и спрашиваешь: «А посылка есть? А щас? А может, уже есть?». Ресурсов дохуя, а толку — ноль, пока событие не случится.
Короче, в чем разница:
| Чё да как | Классический API (Ты долбишь сервер) | Вебхук (Сервер сам прибегает) |
|---|---|---|
| Кто первый начинает | Ты, бедолага, опрашиваешь. | Сервер, когда у него чешется. |
| Эффективность | Овердохуища пустых запросов, трафик, нагрузка. | Данные летят только когда есть что сказать. |
| Скорость реакции | Зависит от того, как часто ты дергаешься. | Практически мгновенно, пиздец как быстро. |
Вот тебе пример, как эту хуйню ловить на Node.js:
app.post('/github-webhook', express.json(), (req, res) => {
const signature = req.headers['x-hub-signature-256'];
// 1. ВАЖНО: Проверить подпись для безопасности
if (!verifySignature(signature, req.body)) {
return res.status(401).send('Invalid signature');
}
// 2. Обработать событие
const event = req.headers['x-github-event'];
if (event === 'push') {
console.log(`New push to: ${req.body.repository.full_name}`);
// Запустить сборку или тесты...
}
res.status(200).end(); // Всегда отвечать успешно
});
Смотри, тут главное — безопасность, ёпта! Любой ушлёпок может начать слать тебе запросы, притворяясь Гитхабом. Поэтому подпись проверяй, а то накроешься медным тазом.
Где эту дичь применяют? Да везде, блядь!
- Оплаты (Stripe): «Э, чувак, деньги пришли, можешь выдать доступ».
- Сборки (GitHub/GitLab): «Код залили — начинай собирать, нехуй спать!».
- Чаты (Slack): «Тебе сообщение пришло, волнение ебать!».
- Боты: «Кто-то написал команду, иди работай, мудя».
Короче, вебхук — это когда система не заставляет тебя бздеть в ожидании, а сама приходит и кладёт информацию прямо в твои объятия. Удобно, ебать мои старые костыли!