API (Application Programming Interfaces) adalah perantara yang menjembatani aplikasi perangkat lunak. Hal ini memungkinkan dua entitas terpisah untuk bertukar data atau fungsionalitas. Namun, ketika sebuah aplikasi menjadi sangat populer, API dan server harus bekerja lebih keras untuk menyediakan layanan mereka kepada lebih banyak pengguna.
Untuk memastikan ini tidak pernah terjadi, pertimbangkan untuk menggunakan alat API seperti Apidog. Dengan Apidog, Anda dapat membangun, menguji, membuat mock, dan mendokumentasikan API semuanya dalam satu aplikasi. Jika Anda tertarik, mulailah hari ini dengan mengklik tombol di bawah! 👇 👇 👇
Pembatasan API (API throttling) dan pembatasan laju API (API rate limiting) adalah dua istilah yang sering dicampuradukkan. Namun, keduanya tidak memiliki arti yang sama. Untuk memahami lebih lanjut tentang perbedaan antara pembatasan dan pembatasan laju, lihat artikel ini terlebih dahulu!

Apa itu Pembatasan API?
Pembatasan API adalah mekanisme yang digunakan untuk mengontrol laju aplikasi dapat mengakses API. Dengan kata lain, pembatasan API membatasi jumlah permintaan yang dapat dibuat ke API dalam periode tertentu.
Pembatasan API digunakan untuk melindungi API dari kelebihan beban, memastikan bahwa setiap orang memiliki kinerja yang lancar saat menggunakan API.
Bagaimana Cara Kerja Pembatasan API?
Untuk menerapkan pembatasan API, sebuah aplikasi akan bergantung pada algoritma untuk mengelola aliran permintaan yang masuk.
Algoritma Token Bucket
Algoritma Token Bucket berkisar pada dua konsep:
- Token: Token adalah "izin" untuk mengakses API
- Bucket: Bucket menampung sejumlah token yang terbatas
Dalam Algoritma Token Bucket, ada beberapa konsep yang perlu Anda ketahui:
- Izin Permintaan: Juga disebut pembatasan laju, API mendefinisikan batas laju yang menentukan berapa banyak token yang ditambahkan ke bucket per satuan waktu (misalnya: 10 token per detik).
- Pemrosesan Permintaan: Setiap kali permintaan diterima, API memeriksa bucket untuk token yang tersisa. Jika ada token yang tersedia,
n
jumlah token akan dihapus, dan permintaan akan diproses. - Bucket Kosong, Perlambat: Jika bucket ditemukan kosong selama pemrosesan permintaan, permintaan tersebut kemudian dibatasi. Ini berarti bahwa aplikasi perlu menunggu hingga token yang cukup ditambahkan (berdasarkan batas laju) sebelum mencoba lagi untuk membuat permintaan lain.
Kapasitas Burst
Model Token Bucket dapat diperluas dengan kapasitas burst; kapasitas burst memungkinkan bucket untuk menampung jumlah token tambahan (anggap saja sebagai bucket yang sedikit lebih besar dengan beberapa token yang sudah diisi sebelumnya).
Dengan kapasitas burst yang ditambahkan, aplikasi dapat mengirimkan burst permintaan yang melebihi batas laju untuk periode singkat sebelum dibatasi. Biasanya diimplementasikan untuk menangani lonjakan lalu lintas yang besar.
Implementasi Pembatasan API
Ada berbagai tingkatan di mana pembatasan API dapat diimplementasikan:
- Berdasarkan Alamat IP: Membatasi permintaan yang berasal dari alamat IP tertentu.
- Berdasarkan Kunci API: Menggunakan kunci API unik untuk mengidentifikasi dan membatasi aplikasi individual.
- Berdasarkan Pengguna: Pembatasan berdasarkan akun pengguna untuk kontrol yang lebih baik.
Kode Kesalahan dan Percobaan Ulang
Ketika permintaan API dibatasi, API biasanya akan mengembalikan kode respons kesalahan (contoh: 429 Terlalu Banyak Permintaan). Aplikasi yang dikembangkan dengan baik memiliki logika percobaan ulang yang diimplementasikan dengan mekanisme backoff, memaksa pengguna untuk menunggu waktu yang semakin lama sebelum dibatasi.
Keuntungan dari Pembatasan API
Pembatasan API menawarkan beberapa keuntungan signifikan yang memastikan operasi API yang lancar dan stabil baik untuk penyedia maupun penggunanya. Berikut adalah rincian manfaat utamanya:
1. Kinerja dan Stabilitas:
- Mencegah Kelebihan Beban: Volume permintaan yang tidak terkontrol dapat membebani server API, menyebabkan waktu respons yang lambat atau bahkan pemadaman. Pembatasan API bertindak sebagai pengaman, mencegah permintaan berlebihan dari merusak sistem. Pengguna mengalami kinerja yang konsisten karena API dapat menangani permintaan secara efisien.
2. Keadilan dan Manajemen Sumber Daya:
- Akses yang Sama: Pembatasan API memastikan bahwa tidak ada satu aplikasi atau pengguna pun yang menguasai semua sumber daya API. Dengan membatasi laju permintaan, ia mendistribusikan akses secara adil di antara semua pengguna, mencegah beberapa orang menurunkan pengalaman bagi orang lain.
3. Skalabilitas dan Efisiensi:
- Beban yang Dapat Diprediksi: Pembatasan API membantu API menangani beban kerja yang dapat diprediksi. Dengan mengatur aliran permintaan, penyedia API dapat mengoptimalkan sumber daya dan infrastruktur untuk pola lalu lintas yang diharapkan. Hal ini memungkinkan penskalaan yang lebih lancar ketika permintaan meningkat.
4. Keamanan:
- Mitigasi DoS: Serangan Denial-of-Service (DoS) bertujuan untuk membebani sistem dengan permintaan, membuatnya tidak tersedia bagi pengguna yang sah. Pembatasan dapat mengurangi serangan semacam itu dengan mengidentifikasi dan membatasi laju permintaan yang sangat tinggi dari satu sumber.
5. Peningkatan Pengalaman Pengguna:
- Waktu Respons yang Konsisten: Dengan mencegah kelebihan beban, pembatasan memastikan pengguna mengalami waktu respons yang konsisten untuk permintaan API mereka. Ini berarti pengalaman yang lebih cepat dan lebih andal untuk semua pengguna yang mengandalkan API.
6. Pemantauan Kesehatan Aplikasi:
- Mengidentifikasi Pola Penggunaan: Data pembatasan dapat dianalisis untuk memahami pola penggunaan dan mengidentifikasi potensi masalah. Misalnya, laju pembatasan yang tinggi untuk aplikasi tertentu mungkin mengindikasikan peluang optimasi untuk aplikasi tersebut.
7. Mendorong Penggunaan yang Bertanggung Jawab:
- Meningkatkan Efisiensi: Pembatasan memberi insentif kepada pengembang untuk merancang aplikasi yang memanfaatkan API secara efisien. Dengan membatasi permintaan, pengembang didorong untuk mengoptimalkan kode mereka dan menghindari panggilan yang tidak perlu.
Contoh Kode Sisi Server Pembatasan API
Contoh kode Python di bawah ini menunjukkan pembatasan API menggunakan Metode Token Bucket.
class TokenBucket:
def __init__(self, capacity, refill_rate):
self.capacity = capacity # Jumlah token maksimum
self.tokens = capacity # Jumlah token saat ini
self.refill_rate = refill_rate # Token ditambahkan per satuan waktu
def get_token(self, current_time):
# Simulasikan pengisian ulang token berdasarkan waktu yang berlalu
elapsed_time = current_time - self.last_refill_time
self.tokens = min(self.capacity, self.tokens + (elapsed_time * self.refill_rate))
self.last_refill_time = current_time
if self.tokens > 0:
self.tokens -= 1
return True
else:
return False
# Contoh penggunaan
bucket = TokenBucket(5, 1) # 5 token, isi ulang 1 per detik
request_time = time.time() # Dapatkan waktu saat ini
if bucket.get_token(request_time):
# Proses permintaan (logika dihilangkan demi singkatnya)
print("Permintaan diizinkan!")
else:
print("Permintaan dibatasi, coba lagi nanti!")
Penjelasan Kode:
- Kelas
TokenBucket
mewakili bucket dengancapacity
danrefill_rate
. - Metode
get_token
memeriksa waktu saat ini dan mensimulasikan pengisian ulang bucket berdasarkan waktu yang berlalu dan laju pengisian ulang. - Jika ada token yang tersedia (
tokens
lebih besar dari 0), ia menghapus token dan mengizinkan permintaan. - Jika bucket kosong, permintaan dibatasi (ditolak).
Apidog - Buat Permintaan Tak Terbatas ke API
Saat Anda menguji API untuk mengamati respons dan kinerjanya, Anda mungkin perlu membuat permintaan tanpa henti. Sebagian besar alat API membatasi pengguna mereka pada sejumlah permintaan tertentu yang dapat mereka buat per hari. Namun, dengan Apidog, Anda dapat terus membuat permintaan ke API selama belum mencapai batas laju API.

Dengan Apidog, alat pengembangan API all-in-one, Anda dapat membangun, membuat mock, menguji, dan mendokumentasikan API. Apidog memfasilitasi semua proses penting dari siklus hidup API ini tanpa harus menginstal atau mengunduh alat API tambahan.
Membangun API dengan Apidog
Dengan Apidog, Anda dapat membuat API sendiri. Apakah ceruk atau berlaku luas dalam banyak situasi, sepenuhnya terserah Anda untuk memutuskan apa yang mampu dilakukan API Anda.

Mulailah dengan menekan tombol API Baru
, seperti yang ditunjukkan pada gambar di atas.

Selanjutnya, Anda dapat memilih banyak karakteristik API. Pada halaman ini, Anda dapat:
- Atur metode HTTP (GET, POST, PUT, atau DELETE)
- Atur URL API (atau titik akhir API) untuk interaksi klien-server
- Sertakan satu/beberapa parameter untuk diteruskan dalam URL API
- Berikan deskripsi tentang fungsionalitas apa yang ingin disediakan oleh API. Di sini, Anda juga dapat menjelaskan batas laju yang Anda rencanakan untuk diterapkan pada API Anda.
Semakin banyak detail yang dapat Anda berikan ke tahap perancangan, semakin deskriptif dokumentasi API Anda, seperti yang ditunjukkan di bagian selanjutnya dari artikel ini.
Untuk memberikan bantuan dalam membuat API jika ini adalah pertama kalinya Anda membuatnya, Anda dapat mempertimbangkan untuk membaca artikel-artikel ini.



Setelah Anda menyelesaikan semua kebutuhan dasar untuk membuat permintaan, Anda dapat mencoba membuat permintaan dengan mengklik Kirim
. Anda kemudian akan menerima respons di bagian bawah jendela Apidog, seperti yang ditunjukkan pada gambar di atas.
Antarmuka pengguna yang sederhana dan intuitif memungkinkan pengguna untuk dengan mudah melihat respons yang diperoleh dari permintaan. Penting juga untuk memahami struktur respons karena Anda perlu mencocokkan kode di sisi klien dan server.
Hasilkan Dokumentasi API Deskriptif dengan Apidog
Dengan Apidog, Anda dapat dengan cepat membuat dokumentasi API yang mencakup semua yang dibutuhkan pengembang perangkat lunak hanya dengan beberapa klik.

Panah 1 - Pertama, tekan tombol Bagikan
di sisi kiri jendela aplikasi Apidog. Anda kemudian akan dapat melihat halaman "Dokumen Bersama", yang seharusnya kosong.
Panah 2 - Tekan tombol + Baru
di bawah Tidak Ada Data
untuk mulai membuat dokumentasi API Apidog pertama Anda.
Pilih dan Sertakan Properti Dokumentasi API Penting

Apidog memberi pengembang opsi untuk memilih karakteristik dokumentasi API, seperti siapa yang dapat melihat dokumentasi API Anda dan mengatur kata sandi file, sehingga hanya individu atau organisasi terpilih yang dapat melihatnya.
Lihat atau Bagikan Dokumentasi API Anda

Apidog mengompilasi detail proyek API Anda ke dalam dokumentasi API yang dapat dilihat melalui URL situs web. Yang harus Anda lakukan adalah mendistribusikan URL sehingga orang lain dapat melihat dokumentasi API Anda!
Jika diperlukan lebih banyak detail, baca artikel ini tentang cara menghasilkan dokumentasi API menggunakan Apidog:

Kesimpulan
Pembatasan API memainkan peran penting dalam memelihara ekosistem API yang sehat dan fungsional. Dengan mengatur aliran permintaan yang masuk, ia melindungi API dari kelebihan beban, memastikan kinerja yang lancar dan waktu respons yang konsisten untuk semua pengguna. Keadilan ini meluas ke manajemen sumber daya, mencegah satu aplikasi memonopoli sumber daya dan menurunkan pengalaman bagi orang lain.
Selain itu, pembatasan memperkuat keamanan dengan mengurangi serangan penolakan layanan yang bertujuan untuk membebani sistem. Intinya, pembatasan API menciptakan skenario win-win bagi penyedia dan pengguna API, mendorong lingkungan yang andal dan efisien untuk pengembangan aplikasi dan pertukaran data.
Apidog dapat menjadi alat API yang optimal untuk memastikan bahwa API Anda berjalan dengan lancar. Bersama dengan fitur dokumentasi Apidog, Anda dapat secara eksplisit menjelaskan apa batas laju untuk API Anda, sehingga mencegah pengguna menyalahgunakan API Anda.