Laravel10で「429 Too Many Requests」エラーの発生した場合の対処

エラーの概要

ajaxの非同期通信等で、短時間に大量リクエストを発生させた場合に「429 Too Many Requests」エラーが発生してしまう。

対処方法

RouteServiceProvider.phpで制限を緩和することができます。

app/Providers/RouteServiceProvider.phpのboot関数のRateLimiterで60と定義している部分があります(デフォルトが60に設定されている)。

これにより1分間に60回のリクエスト制限がかかっているので60⇒1000等に変更する。なお、無制限にするにはRateLimiter::forのブロック自体をコメント化すればよい。

    /**
     * Define your route model bindings, pattern filters, and other route configuration.
     */
    public function boot(): void
    {
        RateLimiter::for('api', function (Request $request) {
            return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
        });

        $this->routes(function () {
            Route::middleware('api')
                ->prefix('api')
                ->group(base_path('routes/api.php'));
        });
    }