In Laravel, you can use middleware to rate limit routes. Middleware acts as a bridge between a request and a response, and can be used to perform a variety of tasks, including rate limiting.
To rate limit a route in Laravel, you can use the built-in throttle
middleware. This middleware allows you to specify the maximum number of requests that can be made to a route within a certain time period.
Here is an example of how to use the throttle
middleware to rate limit a route in Laravel:
Route::middleware('throttle:60,1')->group(function () {
Route::get('/api/users', 'UserController@index');
});
In this example, the throttle
middleware is applied to the /api/users
route, which is grouped inside a closure. The middleware is configured to allow a maximum of 60 requests per minute (1 request per second). If the limit is exceeded, the middleware will return a 429 Too Many Requests
response.
You can also specify a custom error message and status code for the response using the response
option:
Route::middleware('throttle:60,1,response={"error":"Rate limit exceeded"}')->group(function () {
Route::get('/api/users', 'UserController@index');
});
In this example, the middleware will return a 429 Too Many Requests
response with a JSON body containing the error message {"error":"Rate limit exceeded"}
.
Note that you can also apply the throttle
middleware to a group of routes by applying it to the route group instead of individual routes.
You can also create your own custom rate limiting middleware if you need more control or customization.