【问题标题】:Defining request limits in Azure API Management with no subscription key在没有订阅密钥的 Azure API 管理中定义请求限制
【发布时间】:2019-08-20 17:25:06
【问题描述】:

我想通过 Azure API 管理对一些可公开访问(不需要订阅密钥)的端点施加请求限制。我正在考虑一个速率限制,比如说 100K req/min 。我该如何实施? 我试过了:

<rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />

但后来我得到了一个可爱的“表达式评估失败。对象引用未设置为对象的实例。”因为没有订阅密钥被传递.. 我也不能通过IP地址来限制..

谢谢!!

【问题讨论】:

    标签: azure-api-management


    【解决方案1】:

    如果你想将这样的匿名调用分成桶,确实使用 rate-limit-by-key,只需找到请求的其他方面的基础键。

    如果您想一视同仁,只需在您的键表达式中说明 null 订阅:

    <rate-limit-by-key key="@(context.Subscription?.Id ?? "none")" ... />
    

    【讨论】:

      【解决方案2】:

      API 提供商还可以通过引入自定义标头来启用该策略,以允许开发人员的客户端应用程序将密钥传递给 API。更多详情请参考document

      &lt;rate-limit-by-key calls="3" renewal-period="15" counter-key="@(request.Headers.GetValueOrDefault("Rate-Key",""))" /&gt;

      【讨论】:

      • 我喜欢这个想法,但这会迫使我们更改客户端 UI 中的每个调用以传递此标头。我期待没有代码更改。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多