頻度制限は、独立したリクエスターによる特定の API に対するリクエストの頻度を制限するために API でよく使用されます。たとえば、頻度制限を 1 分あたり 1000 回に設定した場合、1 分以内にこの制限を超えると、サーバーは 429: Too Many Attempts 応答を返します。
通常、周波数制限を実装する適切にコーディングされたアプリケーションは、X-RateLimit-Limit、X-RateLimit-Remaining、および Retry-After (制限に達した場合のみ) の 3 つの応答ヘッダーも返します。ヘッダーの後)。 X-RateLimit-Limit は、指定された時間内に許可されるリクエストの最大数を示します。X-RateLimit-Remaining は、指定された期間内に残っているリクエストの数を示します。 (s)。
注: 各 API は独自の頻度制限期間を選択します。GitHub は 1 時間を選択し、Twitter は 15 分を選択し、Laravel ミドルウェアは 1 分を選択します。
Laravel 5.2 の新機能のうち、新しいミドルウェア スロットルを使用することができます。まず、このミドルウェアの使用法を見てください:
Route::group(['prefix'=>'api'],function(){ Route::get('users',function(){ return \App\User::all(); });});
次に、それにミドルウェア スロットルを追加し、デフォルトで 1 分あたり 60 回の試行制限を設定します。 1 分間に 60 回の訪問後:
Route::group(['prefix'=>'api','middleware'=>'throttle'],function(){ Route::get('users',function(){ return \App\User::all(); });});
API/users ルートにアクセスすると、次のような応答ヘッダーが表示されます:
この応答は次のことを意味します。
訪問回数が 60 回を超えた場合、応答ヘッダーは次のようになります。
同時に、応答コンテンツのテキストは次のようになります。 Too Many試み。
44 秒後に再試行すると、ページは通常のアクセスを再開します。
次に、アクセスを 1 分あたり 5 回に制限します。指定された制限に達した後に待機時間を変更したい場合は、次のようにカスタマイズできます:
Route::group(['prefix'=>'api','middleware'=>'throttle:5'],function(){ Route::get('users',function(){ return \App\User::all(); });});
Route::group(['prefix'=>'api','middleware'=>'throttle:5,10'],function(){ Route::get('users',function(){ return \App\User::all(); });});