Rate limiting:
Define Limiter
// AppServiceProvider
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
});Custom Limiter
RateLimiter::for('uploads', function (Request $request) {
return $request->user()->isPremium()
? Limit::none()
: Limit::perMinute(10);
});Apply to Routes
Route::middleware(['throttle:api'])->group(function () {
Route::get('/posts', ...);
});Response Headers
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59