Что такое вебхук (Webhook) и как он работает?

«Что такое вебхук (Webhook) и как он работает?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Вебхук (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), обновления чат-ботов.