Хотів вам сьогодні показати ще 1 протокол - але хочу спочатку про 1 мезанізм
Я це про webhooks і дивно що багато хто не розуміє що це
це не якийсь новий протокол. Це просто механізм, коли сервіс сам повідомляє вас про те, що щось сталось. По факту - звичайний HTTP POST, тільки навпаки: не ви йдете до сервера, а сервер приходить до вас.
Відбулась подія, система шле повідомлення. Все.
Оплата пройшла, юзер зареєструвався, білд завершився, таска змінила статус і на ваш endpoint летить запит з даними про це.
Виглядає приблизно шось типо такого
POST /webhook/payment
{
"event": "payment_success",
"amount": 100,
"user_id": 25
}
Що я маю вам сказать
Більшість куа тестують тільки основний API. Webhook частину, майже ніхто. І потім починається те саме по колу: платіж пройшов, а статус не змінився. CI завершився, нотифікація не прийшла. CRM оновилась, інтеграція мовчить.
Всі дивляться на бекенд. А проблема саме у webhook.
Зазвичай ламається: endpoint недоступний, неправильний secret або signature, webhook приходить кілька разів через retry, payload змінився і ніхто не попередив, система не обробляє дублікати.
Звідси і беруться баги "інколи працює, інколи ні")
Щоб побачити чи webhook взагалі приходить:
tcpdump -i any port 443
Щоб подивитись що в ньому:
ngrok http 8080
Або просто відкрийте webhook.site - там відразу видно headers, body, retry і статус відповіді. Найшвидший спосіб зрозуміти що відбувається.
Якщо тестувати тільки API запити - ви бачите половину картини. Друга половина це події, про які система розповідає сама. І якщо цю половину не перевіряти - баги будуть. Стабільно.
Обняв🤗