Complete the code to apply a rate limit of 60 requests per minute to a route.
Route::middleware('throttle:[1]')->group(function () { Route::get('/api/data', function () { return response()->json(['message' => 'Success']); }); });
The throttle middleware accepts a string like '60,1' which means 60 requests per 1 minute.
Complete the code to create a custom rate limiter named 'uploads' allowing 10 requests per minute.
use Illuminate\Support\Facades\RateLimiter; RateLimiter::for('uploads', function ([1] $request) { return Limit::perMinute(10); });
The closure receives an instance of Illuminate\Http\Request, so the parameter type is Request.
Fix the error in the code to limit requests by user ID instead of IP address.
RateLimiter::for('api', function (Request $request) { return Limit::perMinute(100)->by($request->[1]()); });
To limit by user ID, you call $request->user()->id to get the authenticated user's ID.
Fill both blanks to create a rate limiter that limits 5 requests per minute per user email.
RateLimiter::for('email_limit', function (Request $request) { return Limit::perMinute([1])->by($request->user()->[2]); });
The limit is 5 requests per minute, and the key is the user's email.
Fill all three blanks to define a rate limiter that allows 20 requests per minute per user IP or user ID fallback.
RateLimiter::for('complex_limit', function (Request $request) { return Limit::perMinute([1])->by($request->ip() ?: $request->user()->[2] ?? $request->[3]()); });
The limit is 20 requests per minute. It tries to identify by IP first, then user ID, then IP method fallback.