コンテンツにスキップ

Top

Laravel で 429 Too Many Requests がでる

Laravel で axiosとかでAPIリクエストをするボタンを連打しまくったら、 429 Too Many Requests がでてエラーになってしまった。

なんじゃこれ?

Laravel への API アクセスは 1分に60回まで

結論をいうと、Laravel は 初期設定で 1分間に60回以上のAPIアクセスがあると 429 Too Many Requests を返却する。

この値が妥当かどうかはプロジェクト次第だが、社内インフラとしてのLaravelサーバなので、正直もうちょっとアクセスされても問題ない。
(インターネットに公開して不特定多数からアクセスされるならあれだが、社内のみなので)

よって、1分間に1000回までリクエストしてもOKとするように変更する。
(1秒に16回連打しても960回なので1000で文句あるやつはおらんだろう)

/app/Providers/RouteServiceProvider.php の以下の部分を変更する。

     protected function configureRateLimiting()
     {
         RateLimiter::for('api', function (Request $request) {
            return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
         });
     }

の 60 を、

     protected function configureRateLimiting()
     {
         RateLimiter::for('api', function (Request $request) {
            return Limit::perMinute(1000)->by(optional($request->user())->id ?: $request->ip());
         });
     }
1000に変更。

んで、念のためサーバを再起動したらボタン連打しても 429 Too Many Requests はでなくなった。

以上!