Definisi dan Standar Rate Limit Headers
Saat ini, tidak ada satu RFC tunggal yang secara eksklusif mendefinisikan seluruh mekanisme Rate Limit Headers. Namun, standar industri yang paling relevan adalah RFC 6585 yang memperkenalkan HTTP Status Code 429 Too Many Requests. Untuk header responsnya, komunitas pengembang API saat ini sedang melakukan standardisasi melalui draf IETF berjudul "RateLimit Header Fields for HTTP".
Penggunaan header ini bertujuan untuk memberikan transparansi kepada klien mengenai sisa kuota permintaan sebelum mereka terkena pembatasan (throttling). Implementasi yang konsisten sangat krusial untuk menjaga stabilitas infrastruktur API.
Tabel Header Rate Limit (Standar IETF Draft)
| Header | Deskripsi |
|---|---|
| RateLimit-Limit | Jumlah total permintaan yang diizinkan dalam periode waktu tertentu. |
| RateLimit-Remaining | Sisa kuota permintaan yang tersedia untuk klien saat ini. |
| RateLimit-Reset | Waktu (dalam detik) hingga kuota permintaan diatur ulang (reset). |
| Retry-After | Waktu tunggu yang disarankan sebelum klien mencoba kembali (khusus saat status 429). |
Implementasi Teknis
Dalam praktiknya, server harus menyertakan header ini pada setiap respons sukses atau saat terjadi limitasi. Berikut adalah contoh implementasi respons HTTP saat kuota hampir habis:
HTTP/1.1 200 OK Content-Type: application/json RateLimit-Limit: 1000 RateLimit-Remaining: 5 RateLimit-Reset: 42
Jika klien melampaui batas, server wajib memberikan respons 429:
HTTP/1.1 429 Too Many Requests
Retry-After: 42
Content-Type: application/json
{"error": "Rate limit exceeded"}Panduan Implementasi
- Gunakan Status 429: Jangan gunakan 403 atau 503 untuk pembatasan trafik. RFC 6585 secara spesifik menetapkan 429 untuk kondisi ini.
- Sinkronisasi Waktu: Pastikan server menggunakan format waktu yang konsisten (biasanya detik) untuk menghindari kebingungan pada sisi klien.
- Header Retry-After: Header ini bersifat wajib saat memberikan respons 429 agar klien tahu kapan harus melakukan retry secara otomatis.
- Konsistensi Penamaan: Meskipun draf IETF sedang dalam proses, gunakan prefix
RateLimit-untuk menjaga kompatibilitas dengan alat pemantau API modern.
Analisis Perbandingan
| Fitur | RFC 6585 (Status 429) | IETF Draft (Header) |
|---|---|---|
| Tujuan | Indikator Error | Indikator Status Kuota |
| Status Wajib | Ya | Tidak (Opsional) |
| Kematangan | Standar Resmi | Draf (Draft-ietf-httpapi-ratelimit) |
Penerapan header ini membantu mengurangi beban server akibat polling yang tidak perlu dari klien dan memberikan pengalaman integrasi yang lebih baik bagi pengembang pihak ketiga.