Bosh sahifa Wiki Webhook

Webhook

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 URLevent 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:

  • event turi;
  • event vaqti;
  • object ID;
  • payment status;
  • user ID;
  • order ID;
  • qo‘shimcha metadata.

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.

Security

Webhook endpoint internetdan request qabul qilgani uchun xavfsizlik muhim.

Muhim himoya usullari:

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