Laravel - 限速特定 API 路由

Rya*_*yan 4 php api laravel

我目前正在开发一个 Laravel 驱动的站点,该站点由两个独立的服务器、一个 API 服务器和一个公共 Web 服务器(都运行 Laravel)提供支持。

API 有许多路由,用于验证某些关键术语的可用性,例如电子邮件地址和 URL slug。这些路由通过 AJAX 调用以检查数据库,并在按键时触发。

正如预期的那样,AJAX 请求每分钟触发多次,API 会抛出“请求过多”错误。我知道这可以通过增加请求限制来解决,但是我只想对两条路线执行此操作,而不是全部。

如何禁用单个 API 路由的速率限制?

这是其中一条路线,它非常标准:

Route::post('/email/is-available', function(Request $request) {

    ...

})->middleware('my_own_api_key_checking_middleware');
Run Code Online (Sandbox Code Playgroud)

提前谢谢了!

nam*_*via 8

您收到了太多请求消息,因为 Laravel 默认将节流中间件应用于所有 api 路由,要禁用它,请转到app/Http/Kernel.php并删除或注释throttle属性中的数组条目$middlewareGroups,这将禁用组中每条路由的节流。现在在您的路线文件中将其添加到您想要的路线中:

->middleware('throttle:240,1');
Run Code Online (Sandbox Code Playgroud)

其中第一个数字是请求的限制,第二个数字是时间。