首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Azure API管理创建公共API

使用Azure API管理创建公共API
EN

Stack Overflow用户
提问于 2018-05-20 01:38:30
回答 1查看 239关注 0票数 0

我正在使用Azure API管理来管理Azure中的Web应用程序。

但是,我希望将我的一些API公开,并且不希望用户订阅这些API。

未订阅的用户每分钟只能进行10次呼叫。

我创建了一个没有任何密钥的新订阅,并添加了速率限制策略(每分钟10个呼叫),然而,当我在10秒内进行10个呼叫时,我得到了429个状态代码,这是非常容易理解的。

但是在相同的时间内(一分钟),如果我从不同的设备调用相同的API,我仍然会得到429状态代码。

从第二个设备,用户必须能够访问API,因为它根本没有访问API。

如何在Azure API管理中实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2018-05-20 02:13:10

通过阅读以下文档,我找到了解决方案。

https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/api-management/api-management-sample-flexible-throttling.md

代码语言:javascript
复制
<rate-limit-by-key  calls="10"
          renewal-period="60"
          counter-key="@(context.Request.IpAddress)" />

<quota-by-key calls="1000000"
          bandwidth="10000"
          renewal-period="2629800"
          counter-key="@(context.Request.IpAddress)" />

然而,它发生了一件奇怪的事情。

我已经在接口管理中设置了renewal-period="60"

当我提出请求时(大约10个请求10秒)使用第一个设备(通过wifi连接),我得到429状态代码和"message": "Rate limit is exceeded. Try again in 34 seconds."形式的消息

但是,当我提出请求时(大约10个请求10秒)使用第二个设备(通过蜂窝网络连接的移动电话),我应该会收到一条消息,指示在50秒或60秒后重试。

我在第二个设备上得到的信息如下:

"message": "Rate limit is exceeded. Try again in 24 seconds."

这有点奇怪,因为时间表示第一个设备的更新时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50427936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档