避免在Azure Api终结点上重复https的策略

时间:2020-11-04 09:50:24

标签: azure azure-api-management azure-policy

关于Azure Api端点上的某些重复调用,我有些麻烦。例如,我看到我的端点:

网球/网球

被叫过两次

首先:2020-11-02T18:07:19.8261667Z

第二:2020-11-02T18:07:19.881239Z

我想避免第二次调用具有相同的有效负载(例如“我不执行此调用,因为它比第一次调用太近了,如果5秒后可以,则可以)。我正在寻找与政策相关的内容,但没有发现任何有趣的内容。

1 个答案:

答案 0 :(得分:2)

根据您的描述,也许您想add rate limit使用您的api。我认为this document将为您提供帮助。

这部分描述了如何防止在短时间内调用您的api。您可以修改策略以满足您的自定义请求。

  1. 进入api管理网页,然后选择目标API>所有操作>设计。
  2. 在“入站处理”部分中,选择代码编辑器()图标。
  3. 将光标置于元素内,然后选择在右上角显示片段。
  4. 在右侧窗口的“访问限制策略”下,选择+“限制每个键的呼叫速率”。
  5. 将您的“按码率限制”代码修改为以下代码:
calls="3" renewal-period="15" means you can call this api no more than 3 times within 15 seconds.

enter image description here

<policies>
   <inbound>
     <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
     <base />
   </inbound>
   <backend>
     <base />
   </backend>
   <outbound>
     <set-header name="X-Powered-By" exists-action="delete" />
     <set-header name="X-AspNet-Version" exists-action="delete" />
     <redirect-content-urls />
     <base />
   </outbound>
   <on-error>
     <base />
   </on-error>
</policies>

编辑后,您可以调用您的api,然后在调用太多次作为配置时会发现429 Too many requests