Webhook — bir tizimda voqea sodir bo‘lganda boshqa tizimga avtomatik HTTP so‘rov yuborish mexanizmi. Webhook event-based integration uchun ishlatiladi.
Webhook orqali bir servis ikkinchi servisga “voqea bo‘ldi” deb xabar beradi. Masalan, payment muvaffaqiyatli bo‘lsa, payment provider sayt backendiga webhook yuborishi mumkin.
Vazifasi
Webhook quyidagi vazifalarni bajaradi:
- tizimlar o‘rtasida avtomatik xabar yuborish;
- event sodir bo‘lganda boshqa service’ni ogohlantirish;
- payment statusni backendga yetkazish;
- Git push yoki deploy eventlarini yuborish;
- CRM, bot, email yoki notification tizimlarini bog‘lash;
- pollingga ehtiyojni kamaytirish;
- integration jarayonini real-time qilish.
Masalan, UzbekDevs’da yangi meetup ro‘yxatdan o‘tishi bo‘lsa, webhook boshqa tizimga xabar yuborishi mumkin.
Webhook qanday ishlaydi?
Webhook odatda HTTP POST request orqali ishlaydi.
Oddiy jarayon:
- birinchi tizimda event sodir bo‘ladi;
- tizim oldindan berilgan webhook URL’ni oladi;
- shu URL’ga HTTP request yuboradi;
- request body ichida event ma’lumotlari bo‘ladi;
- qabul qiluvchi server ma’lumotni tekshiradi;
- kerakli amalni bajaradi.
Webhook qabul qiluvchi endpoint doim internetdan request qabul qila olishi kerak.
Webhook URL
Webhook URL — event xabari yuboriladigan endpoint manzili.
Misol:
https://example.com/webhooks/payment
Webhook URL:
- qabul qiluvchi serverga tegishli bo‘ladi;
- provider panelida sozlanadi;
- xavfsiz va maxfiy bo‘lishi mumkin;
- HTTPS orqali ishlashi kerak;
- maxsus endpoint sifatida yaratiladi.
Payload
Payload — webhook request body ichidagi ma’lumot.
Payload ichida quyidagilar bo‘lishi mumkin:
Payload ko‘pincha JSON formatda yuboriladi.
Event
Webhook eventga asoslanadi. Event — tizimda sodir bo‘lgan muhim hodisa.
Event misollari:
- payment succeeded;
- order created;
- user registered;
- message received;
- repository pushed;
- build completed;
- subscription canceled.
Har bir event uchun webhook alohida xabar yuborishi mumkin.
Webhook signature
Webhook xavfsizligi uchun provider requestga signature qo‘shishi mumkin. Qabul qiluvchi server signature orqali request haqiqiyligini tekshiradi.
Signature odatda:
- HMAC orqali yaratiladi;
- secret key ishlatadi;
- request body asosida hisoblanadi;
- headerda yuboriladi;
- server tomonidan qayta hisoblab solishtiriladi.
Bu soxta webhook requestlarni kamaytiradi.
Retry
Webhook yuborishda qabul qiluvchi server vaqtincha ishlamasa, provider requestni qayta yuborishi mumkin.
Retry mexanizmi:
- server 2xx javob bermasa ishga tushadi;
- ma’lum vaqt oralig‘ida qayta yuboradi;
- bir necha marta takrorlanishi mumkin;
- duplicate eventlarga olib kelishi mumkin.
Shuning uchun webhook qabul qiluvchi tizim idempotent bo‘lishi muhim.
Idempotency
Webhook’da bir event bir necha marta kelishi mumkin. Qabul qiluvchi server bir xil eventni qayta ishlaganda noto‘g‘ri natija chiqarmasligi kerak.
Idempotency uchun:
- event ID saqlanadi;
- oldin ishlangan event tekshiriladi;
- duplicate event rad qilinadi yoki e’tiborsiz qoldiriladi;
- payment yoki order holati qayta noto‘g‘ri o‘zgarmaydi.
Webhook va API farqi
Webhook va API bir-biriga bog‘liq, lekin ishlash yo‘nalishi farq qiladi.
- API’da client serverdan ma’lumot so‘raydi;
- webhook’da server event bo‘lganda client endpointiga xabar yuboradi;
- API pull modelga yaqin;
- webhook push modelga yaqin;
- webhook pollingni kamaytiradi.
Masalan, har 1 daqiqada payment status so‘rash o‘rniga, payment provider webhook yuboradi.
Webhook va WebSocket farqi
Webhook va WebSocket real-time integrationda ishlatilishi mumkin, lekin farq qiladi.
- webhook HTTP request orqali event yuboradi;
- WebSocket doimiy connection saqlaydi;
- webhook server-to-server integrationda ko‘p ishlatiladi;
- WebSocket browser-client real-time aloqada ko‘p ishlatiladi;
- webhook event asosida ishlaydi;
- WebSocket doimiy ikki tomonlama kanal beradi.
Security
Webhook endpoint internetdan request qabul qilgani uchun xavfsizlik muhim.
Muhim himoya usullari:
- HTTPS ishlatish;
- signature tekshirish;
- timestamp tekshirish;
- secret key ishlatish;
- IP allowlist;
- idempotency;
- payload validation;
- rate limiting;
- log va monitoring.
Webhook’da faqat URL maxfiyligiga tayanish yetarli emas.
Dasturlashdagi o‘rni
Webhook turli tizimlarni event asosida bog‘lash uchun ishlatiladi. U payment, Git, CI/CD, bot, notification, CRM, SaaS va automation tizimlarida keng qo‘llanadi.
Bog‘liq tushunchalar
API, HTTP, WebSocket, Event, Payload, HMAC, Signature, Idempotency, Retry, Integration, Security