`
dcj3sjt126com
  • 浏览: 1881396 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

yii2 restful web服务[速率限制]

    博客分类:
  • Yii2
阅读更多

速率限制

为防止滥用,你应该考虑增加速率限制到您的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-advanced-api, 具有 RESTful API设置的Yii2高级模板.zip

    yii2-advanced-api, 具有 RESTful API设置的Yii2高级模板 2高级应用程序模板中的 rest APIYii2高级应用程序模板,配置了 RESTful API 。 查看 http://budiirawan.com/setup-restful-api-yii2/ 了解更详细的解释安装 ...

    Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解

    本文将深入讨论Yii2框架中的RESTful API相关功能,包括格式化响应、授权认证和速率限制三个核心部分。对于希望深入了解Yii2 RESTful API开发的读者而言,这些内容无疑是重要且实用的。 一、目录结构 在Yii2框架中,...

    yii2框架restful url接口 认证内容的开发的分享

    RESTful URL接口在现代Web服务中非常常见,它们提供了一种结构化的URL方式来访问和操作资源,符合HTTP协议的设计原则。在Yii2中,实现RESTful接口能够帮助开发者构建高效、可维护的API。本文将深入探讨在Yii2框架下...

    Yii2一个现代的PHP开发框架为专业的Web开发设计

    6. RESTful API支持:Yii2支持创建符合REST原则的API,方便与其他系统集成和实现移动应用开发。 7. 测试工具:Yii2提供了完整的测试套件,包括单元测试、功能测试和验收测试,帮助开发者编写高质量的代码。 8. ...

    yii2 通用后台系统

    API接口开发则可以利用Yii2的RESTful特性,快速构建符合REST原则的API,方便前后端分离的项目开发。 在文件名称列表 "ytwo" 中,可能包含了该后台系统的源代码文件,例如配置文件、模型类、控制器、视图文件、公共...

    yii2swoole让yii2运行在swoole上

    Yii2框架是一款基于组件、高性能、专为Web2.0应用开发设计的PHP框架,而Swoole则是一个用于PHP的高性能、异步、并行的网络通信引擎,能够使PHP运行在服务端,实现全异步非阻塞的网络I/O操作。将Yii2与Swoole结合,...

    使用yii敏捷开发web应用

    4. **RESTful API开发**:如何使用Yii构建符合REST原则的API服务。 5. **模板引擎和视图**:深入理解Yii的视图系统,使用模板和布局。 6. **社区和资源**:引导读者如何利用Yii社区获取帮助,以及相关文档和教程。 ...

    yii2-master

    4. **RESTful API支持**:Yii2框架对RESTful Web服务有很好的支持,可以方便地创建和消费API,符合现代Web应用的开发需求。 5. **缓存机制**:Yii2内置了多种缓存策略,包括文件缓存、APC缓存、Memcached、Redis等...

    PHP Yii2框架开发

    8. **RESTful API支持**:Yii2为构建RESTful Web服务提供了强大的支持,便于实现前后端分离和移动应用开发。 9. **国际化与本地化**:内置的I18N和L10N功能,方便开发多语言应用。 10. **社区支持**:Yii2拥有活跃...

    php开发框架Yii2

    Yii2 具有强大的API开发支持,可以方便地构建符合RESTful原则的Web服务,与移动应用和其他服务进行交互。 七、社区支持与生态系统 Yii2 拥有活跃的开发者社区,提供了丰富的扩展和插件,如yii2-admin、yii2-grid等...

    yii2医疗实例

    Yii2是MVC(模型-视图-控制器)架构模式的实现,它鼓励清晰的代码组织结构,使得开发者能够高效地构建复杂的Web应用。框架内建了缓存、数据库事务、安全性和性能优化等功能,支持RESTful API开发,这在构建医疗信息...

    yii2中文开发手册

    此外,Yii2的事件和行为系统允许自定义代码执行流程,而服务定位器和依赖注入容器则帮助管理类的实例。 3. **架构原理**:Yii2采用模块化、层化的架构,支持插件式开发。路由和控制器映射规则使URL管理灵活,可实现...

    Yii 2文件下载

    1. **yiisoft/yii2**: 框架的核心组件,包括MVC(模型-视图-控制器)架构、数据库访问层、缓存机制、身份验证和授权等。 2. **Composer配置文件**:用于管理依赖和自动加载类库。 3. **基础应用模板**:提供一个基本...

Global site tag (gtag.js) - Google Analytics