/ php

Menambahkan Rate limit pada Lumen Framework 5

Lumen adalah microframework PHP turunan dari Laravel. Strukturnya yang kecil banyak disukai untuk pembuatan API.

Sebagai API, biasanya memiliki fitur Rate Limit untuk membatasi permintaan request. Fitur Rate Limit sering digunakan pada API untuk pengembang pihak ketiga.

Cara untuk menerapkan Rate limit pada Lumen 5, bisa meminjam Laravel ThrottleRequests middleware. Berikut caranya:

  1. Ambil Laravel 5 ThrottleRequests
    Downlod di Laravel 5 Github.

  2. Masukkan ke folder Lumen 5 app/Http/Middleware dengan nama ThrottleRequests.php.

  3. Ubah namespace menjadi namespace App\Http\Middleware;.

     <?php
    
     namespace App\Http\Middleware;
    
     use Closure;
     use RuntimeException;
     use Illuminate\Support\Str;
    
     // ...sisa kode...//
    
  4. Cari dan ubah resolveRequestSignature method dalam ThrottleRequests.php dengan kode berikut.

     /**
      * Resolve request signature.
      *
      * @param  \Illuminate\Http\Request  $request
      * @return string
      * @throws \RuntimeException
      */
     protected function resolveRequestSignature($request)
     {
         return sha1(
             $request->method() .
             '|' . $request->server('SERVER_NAME') .
             '|' . $request->path() .
             '|' . $request->ip()
         );
     }
    
  5. Daftarkan Middleware di app/bootsrap/app.php

     $app->routeMiddleware([
          'throttle' => App\Http\Middleware\ThrottleRequests::class,
     ]);
    
  6. Perbarui autoload

     composer dump-autoload
    
  7. Penggunaan pada endpoint

     $router->group(['middleware' => 'throttle:5,1'], function () use ($router) {
         $router->get('/', function () use ($router) {
             return $router->app->version();
         });
     });
    

Itu tadi contoh penggunaannya, lihat pada (['middleware' => 'throttle:5,1'] yang berarti Rate Limit membatasi 5 requests per menit.

Referensi: