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());
});
}
んで、念のためサーバを再起動したらボタン連打しても 429 Too Many Requests はでなくなった。
以上!