background icons
background icons 2
Apa Itu Webhook? Konsep dan Cara Kerjanya
Fitri Hy Fitri Hy
Tutorial 28-09-2024

Apa Itu Webhook? Konsep dan Cara Kerjanya

Webhook adalah metode yang memungkinkan satu aplikasi memberikan data secara real-time kepada aplikasi lain. Alih-alih aplikasi meminta data (request) secara periodik dari server lain (polling), webhook memungkinkan server untuk mengirimkan data secara otomatis ketika peristiwa tertentu terjadi. Konsep ini mengurangi latensi dan beban server karena tidak perlu melakukan permintaan terus-menerus untuk memeriksa apakah ada perubahan.

Konsep Dasar Webhook

Webhook bekerja berdasarkan event-driven. Saat suatu peristiwa terjadi (seperti pembayaran berhasil, komentar baru di blog, atau pesan terkirim), server yang memiliki webhook akan mengirim data ke URL tertentu yang telah ditentukan sebelumnya. URL ini disebut sebagai endpoint dan biasanya milik aplikasi yang ingin menerima pemberitahuan atau data terkait peristiwa tersebut.

Untuk lebih memahami bagaimana konsep webhook bekerja, kita bisa membayangkan dua aplikasi:

  • Aplikasi Pengirim (server penyedia data, misalnya layanan pembayaran online)
  • Aplikasi Penerima (server penerima data, misalnya sistem e-commerce)

Ketika pengguna melakukan transaksi di aplikasi pengirim, aplikasi pengirim akan mengirimkan pemberitahuan tentang transaksi tersebut ke endpoint (URL) yang sudah disiapkan di aplikasi penerima.
Cara Kerja Webhook

Proses kerja webhook biasanya melalui langkah-langkah berikut

  • Mendaftarkan URL: Aplikasi penerima harus menyediakan endpoint (URL) yang bisa diakses oleh aplikasi pengirim. URL ini akan didaftarkan ke aplikasi pengirim, sehingga setiap kali ada event, aplikasi pengirim tahu ke mana data harus dikirim.
  • Menentukan Event: Aplikasi pengirim akan menunggu event yang telah ditentukan (misalnya, konfirmasi pembayaran berhasil, perubahan status pengiriman, dll.). Ketika event tersebut terjadi, webhook akan dipicu.
  • Mengirimkan Data: Ketika event terjadi, server pengirim akan mengirimkan data dalam bentuk HTTP POST request ke endpoint yang terdaftar. Biasanya data yang dikirim dalam format JSON, XML, atau bentuk lainnya.
  • Memproses Data: Aplikasi penerima akan menerima data tersebut, memprosesnya, dan mungkin mengambil tindakan tertentu, seperti memperbarui status order, mengirim email ke pelanggan, atau menyimpan informasi ke dalam database.

Kelebihan dan Kekurangan Webhook

Kelebihan:

  • Real-Time: Webhook memungkinkan data dikirim secara real-time, sehingga aplikasi penerima dapat merespons event dengan cepat.
  • Efisien: Mengurangi kebutuhan untuk polling terus-menerus, sehingga lebih menghemat sumber daya server dan bandwidth.
  • Mudah diimplementasikan: Hanya membutuhkan URL endpoint dan kemampuan untuk memproses request HTTP.

Kekurangan:

  • Keamanan: Karena data dikirim secara langsung ke URL, penting untuk mengamankan endpoint ini dengan cara yang tepat, misalnya dengan otentikasi token atau sertifikat SSL.
  • Tidak ada jaminan pengiriman: Jika server penerima down atau tidak tersedia, data bisa saja hilang, kecuali aplikasi pengirim mengimplementasikan retry logic.

Contoh Implementasi Webhook

Mari kita lihat bagaimana implementasi webhook dalam kasus sederhana menggunakan layanan pembayaran dan sistem e-commerce:

  • Layanan Pembayaran: Misalkan kamu menggunakan layanan pembayaran seperti Midtrans. Setiap kali ada transaksi yang berhasil, layanan ini bisa mengirimkan pemberitahuan ke sistem e-commerce kamu melalui webhook.
  • Endpoint di E-commerce: Di server e-commerce, kamu harus menyediakan endpoint yang bisa menerima data. Sebagai contoh, endpoint /webhook-payment akan menerima informasi pembayaran.

Berikut contoh sederhana implementasi webhook dalam Node.js

const express = require('express');
const app = express();

// Middleware untuk parsing data JSON
app.use(express.json());

// Endpoint untuk menerima webhook
app.post('/webhook-payment', (req, res) => {
  const paymentData = req.body;
  console.log('Pembayaran diterima:', paymentData);

  // Proses data pembayaran, misalnya memperbarui status order
  res.status(200).send('Webhook diterima');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server berjalan di port ${PORT}`);
});

Dalam contoh di atas:

  • Aplikasi menerima data dari webhook menggunakan endpoint /webhook-payment.
  • Data yang diterima dari layanan pembayaran diproses, misalnya memperbarui status transaksi.

Kesimpulan

Webhook adalah cara yang efisien dan cepat untuk menerima data real-time dari server eksternal ketika suatu event terjadi. Dibandingkan dengan polling, webhook menawarkan keunggulan dalam hal efisiensi dan waktu respons. Namun, penting untuk memastikan keamanan dan keandalan sistem webhook dengan mengimplementasikan otentikasi dan retry mechanism.

Webhook banyak digunakan dalam berbagai layanan seperti sistem pembayaran, platform media sosial, alat monitoring, dan masih banyak lagi, menjadikannya salah satu alat komunikasi antar-aplikasi yang populer dalam pengembangan web modern.