当前位置:首页 > 开发 > 开源软件 > 正文

yii2 restful web服务[速率限制]

发表于: 2014-12-01   作者:dcj3sjt126com   来源:转载   浏览:
摘要: 速率限制 为防止滥用,你应该考虑增加速率限制到您的API。 例如,您可以限制每个用户的API的使用是在10分钟内最多100次的API调用。 如果一个用户同一个时间段内太多的请求被接收, 将返回响应状态代码 429 (这意味着过多的请求)。 要启用速率限制, [[yii\web\User::identityClass|user identity class]] 应该实现 [[yii\filter

速率限制

为防止滥用,你应该考虑增加速率限制到您的API。 例如,您可以限制每个用户的API的使用是在10分钟内最多100次的API调用。 如果一个用户同一个时间段内太多的请求被接收, 将返回响应状态代码 429 (这意味着过多的请求)。

要启用速率限制, [[yii\web\User::identityClass|user identity class]] 应该实现 [[yii\filters\RateLimitInterface]]. 这个接口需要实现以下三个方法:

  • getRateLimit(): 返回允许的请求的最大数目及时间,例如,[100, 600] 表示在600秒内最多100次的API调用。
  • loadAllowance(): 返回剩余的允许的请求和相应的UNIX时间戳数 当最后一次速率限制检查时。
  • saveAllowance(): 保存允许剩余的请求数和当前的UNIX时间戳。

你可以在user表中使用两列来记录容差和时间戳信息。 loadAllowance() 和 saveAllowance() 可以通过实现对符合当前身份验证的用户 的这两列值的读和保存。为了提高性能,你也可以 考虑使用缓存或NoSQL存储这些信息。

一旦 identity 实现所需的接口, Yii 会自动使用 [[yii\filters\RateLimiter]] 为 [[yii\rest\Controller]] 配置一个行为过滤器来执行速率限制检查。 如果速度超出限制 该速率限制器将抛出一个 [[yii\web\TooManyRequestsHttpException]]。 你可以在你的 REST 控制器类里配置速率限制,

public function behaviors()
{
    $behaviors = parent::behaviors();
    $behaviors['rateLimiter']['enableRateLimitHeaders'] = false;
    return $behaviors;
}

当速率限制被激活,默认情况下每个响应将包含以下HTTP头发送 目前的速率限制信息:

  • X-Rate-Limit-Limit: 同一个时间段所允许的请求的最大数目;
  • X-Rate-Limit-Remaining: 在当前时间段内剩余的请求的数量;
  • X-Rate-Limit-Reset: 为了得到最大请求数所等待的秒数。

你可以禁用这些头信息通过配置 [[yii\filters\RateLimiter::enableRateLimitHeaders]] 为false, 就像在上面的代码示例所示。

yii2 restful web服务[速率限制]

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
文章出自: Bruce Sun , Java 架构师, IBM   简介:由于它简便、轻量级以及通过 HTTP 直接传输数
对于企业应用来说,数据是许多业务的命脉,软件通常是可替换的,但是多年积累的数据是永远不能替换
对于企业应用来说,数据是许多业务的命脉,软件通常是可替换的,但是多年积累的数据是永远不能替换
文章出自: Bruce Sun , Java 架构师, IBM   简介: 由于它简便、轻量级以及通过 HTTP 直接传输数
有时我们 nginx 需要和 wowza 服务器交互以进行一些 LB 事宜;有时我们的管理员需要实时了解 wowza
使用 Apache Wink、Eclipse 和 Maven 开发 RESTful Web 服务 Gabriel Mateescu , 计算科学家, Natio
from:http://www.ibm.com/developerworks/cn/web/wa-aj-multitier/ REST(Representational state t
基于jersey和Apache Tomcat构建Restful Web服务(一)   现如今,RESTful架构已然成为了最流行的
基于jersey和Apache Tomcat构建Restful Web服务(二)   上篇博客介绍了REST以及Jersey并使用其搭
from:http://www.ibm.com/developerworks/cn/web/wa-aj-multitier/ REST(Representational state tr
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号