dingo API中的访问节流限制

本文档介绍了如何在API中实现访问节流限制,通过启用`api.throttle`中间件来控制客户端在指定时间内的请求次数。示例代码展示了如何为不同路由设置限制,包括全局限制和路由特定限制,如限制3次请求并在1分钟后过期。这有助于保护API免受滥用并确保服务稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

访问节流限制

节流限速(throttling) 允许你限制客户端给定时间的访问次数。
限制和过期时间是在限速器里定义的。
默认有两个限速器,验证通过限速器未验证限速器

访问节流限制

访问节流限制

要为路由或路由组启用节流限制,你必须启用 api.throttle 中间件。
一旦启用了节流限制,你必须已经配置过了一些限制或配置过了具体的路由限制。

$api->version('v1', ['middleware' => 'api.throttle'], function ($api) {
    // 此版本组中的路由将需要身份认证.
});

特定路由上的节流限制

$api->version('v1', function ($api) {
//启用了中间件验证
    $api->get('user', ['middleware' => 'api.throttle', function () {
        // 这个路由需要验证
    }]);
//没有用到验证
    $api->get('posts', function () {
        // 这个路由不需要验证
    });
});

路由特定节流

如果只是想限制某些路由或者路由群组,可使用 limit 和 expires 选项

例如,我在一个为v1版的API中使用节流
limit是请求次数,expires是过期时间

$api->version('v1', ['middleware' => 'api.throttle', 'limit' => 3, 'expires' => 1], function ($api) {
	$api->group(['middleware' => 'api.auth'], function ($api) {
        $api->get('users', [\App\Http\Controllers\TestController::class, 'users']);
    });
});

以上为这个路由设置了请求限制 3次,过期时间 1 分钟。如果你把它设置在路由群组上,那组内的每个路由具有 3 次请求的限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小信啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值