我目前正在一个Laravel驱动的网站上,该网站由两个独立的服务器,一个API服务器和一个公共Web服务器(均运行Laravel)驱动。
API有许多路由,用于验证某些关键术语的可用性,例如电子邮件地址和URL链接。这些路由通过AJAX调用以检查数据库,并在按键时触发。
可以预料的是,每分钟会触发AJAX请求多次,因此API会引发“请求过多”错误。我知道可以通过增加请求限制来解决此问题,但是我只想针对两条路由而不是全部进行此操作。
如何禁用单个API路由的速率限制?
这是路线之一,很标准:
Route::post('/email/is-available', function(Request $request) {
...
})->middleware('my_own_api_key_checking_middleware');
非常感谢!
答案 0 :(得分:1)
您收到的请求消息过多,因为Laravel默认将节流中间件应用于所有api路由,要禁用它,请转到app/Http/Kernel.php
并从属性中删除或评论throttle
数组条目$middlewareGroups
,这将为组中的每条路由禁用节流。
现在,在您的路线文件上,将其添加到所需的路线:
->middleware('throttle:240,1');
第一个数字是请求的限制,第二个是时间。