5分に3回までのアクセスを許可する場合
Route::middleware('throttle:3,5')->group(function () {
Route::get('/chatemb', [App\Http\Controllers\User\ChatEmbController::class, 'index'])->name('chatemb.index');
});
レート制限状況の確認方法
レート制限に関する情報はレスポンスヘッダーで確認可能。
1.開発者ツールを起動
2.「Network」-> 該当のリクエストを選択 ->「Headers」をクリックすると以下が表示される。
・X-RateLimit-Limit : 許可された最大リクエスト数
・X-RateLimit-Remaining: 残りのリクエスト数
・X-RateLimit-Reset : レート制限がリセットされる時間のUnixタイムスタンプ
レート制限に引っかかった場合
HTTPステータスコード429(Too Many Requests)が返され、Laravelだと以下のような表示になる。
レート制限時のメッセージをカスタマイズしたい場合
app/Exceptions/Handler.phpに以下を追記すればOK。
public function render($request, Throwable $exception)
{
if ($exception instanceof \Illuminate\Http\Exceptions\ThrottleRequestsException) {
return response()->json([
'message' => 'リクエストが多すぎます。少し待ってから再試行してください。',
], 429, [], JSON_UNESCAPED_UNICODE);
}
return parent::render($request, $exception);
}