Kembali ke Semua Artikel Blog Tutorial

Cara Mengatasi Error 429 Too Many Requests dan Rate Limiting pada API Laravel

Tim Technical Support AN Media
05 Sep 2026
Cara Mengatasi Error 429 Too Many Requests dan Rate Limiting pada API Laravel - Pembuatan Website & Aplikasi di Jember

Pengguna API Laravel sering menemui HTTP 429 Too Many Requests ketika batas request terlampaui. Artikel ini memberikan solusi teknis lengkap untuk mengatasi dan menyesuaikan rate limiting sehingga API tetap stabil.

Langkah 1: Periksa Konfigurasi Rate Limiting Default

Laravel menggunakan RateLimiter yang didefinisikan di app/Providers/RouteServiceProvider.php. Buka file tersebut dan pastikan definisi tidak terlalu ketat.

use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Http\Request;

public function boot()
{
    RateLimiter::for('api', function (Request $request) {
        return Limit::perMinute(60)->by($request->ip()); // ubah 60 sesuai kebutuhan
    });
}

Langkah 2: Sesuaikan Batas di .env

Supaya mudah mengubah tanpa menyentuh kode, tambahkan variabel di .env dan pakai di RouteServiceProvider:

# .env
API_RATE_LIMIT=120
RateLimiter::for('api', function (Request $request) {
    $limit = env('API_RATE_LIMIT', 60);
    return Limit::perMinute($limit)->by($request->ip());
});

Langkah 3: Terapkan Middleware Throttle pada Route

Jika ingin mengatur limit per route, gunakan middleware throttle di file routes/api.php:

Route::middleware(['throttle:api'])->group(function () {
    Route::get('/products', 'ProductController@index');
    // route lain
});

// contoh limit khusus 30 request per menit untuk endpoint tertentu
Route::get('/search', 'SearchController@index')->middleware('throttle:30,1');

Langkah 4: Buat Middleware Kustom untuk Penanganan 429

Jika ingin mengirim respons JSON yang lebih informatif, buat middleware baru:

php artisan make:middleware CustomThrottle

Isi app/Http/Middleware/CustomThrottle.php:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class CustomThrottle
{
    public function handle(Request $request, Closure $next, $maxAttempts = 60, $decayMinutes = 1)
    {
        $key = sha1($request->ip());
        $attempts = cache()->increment($key);
        cache()->add($key, 0, $decayMinutes * 60);

        if ($attempts > $maxAttempts) {
            return response()->json([
                'message' => 'Terlalu banyak permintaan. Coba lagi dalam ' . $decayMinutes . ' menit.',
                'retry_after' => cache()->get($key . ':timer')
            ], Response::HTTP_TOO_MANY_REQUESTS);
        }

        $response = $next($request);
        return $response;
    }
}

Daftarkan di app/Http/Kernel.php:

'custom.throttle' => \App\Http\Middleware\CustomThrottle::class,

Lalu gunakan pada route:

Route::post('/order', 'OrderController@store')->middleware('custom.throttle:100,1');

Langkah 5: Monitor dan Tuning dengan Laravel Telescope atau Grafana

  • Pasang Laravel Telescope untuk melihat statistik request per IP.
  • Jika menggunakan server Nginx, aktifkan limit_req_zone sebagai lapisan tambahan.
# /etc/nginx/conf.d/api_rate_limit.conf
limit_req_zone $binary_remote_addr zone=api:10m rate=120r/m;

server {
    location /api/ {
        limit_req zone=api burst=20 nodelay;
        proxy_pass http://127.0.0.1:8000;
    }
}

"Dengan mengkombinasikan Laravel RateLimiter, middleware kustom, dan kontrol di level server, kami di AN Media berhasil menurunkan error 429 hingga 95% pada proyek klien kami di Jember," kata Rizky Pratama, Lead Engineer AN Media.

Langkah 6: Uji Coba dengan Skrip Bash

Gunakan curl dalam loop untuk memastikan limit berfungsi:

#!/bin/bash
url="http://localhost/api/products"
for i in {1..130}; do
  curl -s -o /dev/null -w "%{http_code}\n" $url
  sleep 0.5
done

Jika konfigurasi benar, Anda akan melihat kode 429 muncul setelah batas tercapai.

Kesimpulan & Call to Action

Dengan mengikuti enam langkah di atas, error 429 pada API Laravel dapat diidentifikasi, dikonfigurasi ulang, dan dipantau secara real‑time. Optimalkan rate limiting sesuai pola penggunaan klien Anda untuk menjaga performa dan menghindari pemblokiran tidak sengaja.

Butuh bantuan implementasi atau audit API? Hubungi tim AN Media sekarang dan dapatkan solusi khusus untuk proyek Anda.

Tertarik Membuat Website atau Aplikasi Android/Mobile di Jember?

Tim pengembang profesional AN Media Jember siap membantu mewujudkan aplikasi website dan mobile impian Anda dengan arsitektur terbaik & terjangkau.

Konsultasi Gratis Sekarang

Artikel Lainnya yang Relevan

Rekomendasi bacaan menarik lainnya seputar pembuatan website & aplikasi

Lihat Semua Blog →
Panduan Keamanan Password Management dan Two-Factor Authentication (2FA) Admin - AN Media Jember Tutorial
30 Aug 2026
Panduan Keamanan Password Management dan Two-Factor Authentication (2FA) Admin

Langkah praktis mengamankan akun admin dengan manajemen password kuat dan 2FA, lengkap den...

Baca Selengkapnya →
Cara Memperbaiki SSL Certificate Expired dan Error Connection Not Private - AN Media Jember Tutorial
30 Aug 2026
Cara Memperbaiki SSL Certificate Expired dan Error Connection Not Private

Panduan langkah demi langkah memperbaiki SSL expired dan mengatasi error "Connection Not P...

Baca Selengkapnya →
Cara Mengatasi Error 500 Internal Server Error pada Website Laravel - AN Media Jember Tutorial
30 Aug 2026
Cara Mengatasi Error 500 Internal Server Error pada Website Laravel

Panduan lengkap langkah demi langkah mengatasi error 500 pada Laravel, mulai dari log hing...

Baca Selengkapnya →