对于基于动态的配额设置: http://apigee.com/docs/api-services/content/rate-limit-api-traffic-using-quota#dynamic-product-based-quota-settings
我发现当Developer App没有定义任何属性时,例如verifyapikey.VerifyApiKey.apiproduct.developer.quota.limit,它默认为0.这会使配额检查失败。
这需要创建所有新的开发人员应用程序以设置属性。 如果没有设置默认配额,怎么可能?
答案 0 :(得分:2)
我可以想到两个选项:
1)更好的选择是确保应用总是具有您首先填充的配额所引用的变量。这消除了对2个变量的需要,并且可以在引用时使用配额策略。此外,管理员可以在必要时覆盖或分配不同的配额。可以配置Dev Connect以确保在创建或注册应用程序时分配应用程序自定义属性。
2)或者,您可以从1个来源(如应用自定义变量)进行检查,然后如果它没有值,则可以使用其他来源(如API产品配额设置)。
不幸的是,我不相信这可以在配额政策中完成。相反,您可以使用服务标注策略根据可用内容设置1个配额变量。
那......或者你可以使用2种不同的配额政策,其中任何一种都会根据他们的条件被触发。他们的条件会引用你提到的变量来检查它们是否存在。
<Step>
<Condition>(app.quota_var is null)</Condition>
<Name>QuotaPolicyUsingApiProductQuotaReference</Name>
</Step>
<Step>
<!-- if the app custom variable is there, you must mean to use it -->
<Condition>(app.quota_var != null)</Condition>
<Name>QuotaPolicyUsingAppQuotaReference</Name>
</Step>
答案 1 :(得分:0)
配额可以在API product级别配置,供策略使用。该变量将反映此配置。
答案 2 :(得分:0)
API产品就像一个“元策略”;它充当其他策略用于实施访问控制和配额的值的来源。
确保您创建开发人员,为该开发人员创建应用,并批准至少一个API产品的应用。当API代理在运行时检查密钥时,它还将解析API产品并提取配额设置 - 有效地将密钥与“服务计划”匹配。
这里有关于这些实体之间关系的详细说明:
http://apigee.com/docs/api-services/content/using-edge-management-api-publish-apis
答案 3 :(得分:0)
查看Quota schema definition,我在Allow中看到count和countRef都可用。
你尝试过这样的事吗?
<Quota name="CheckQuota">
<Interval>24</Interval>
<TimeUnit>hour</TimeUnit>
<Allow count="100" countRef="apiproduct.developer.quota.limit"/>
<Identifier ref="client_id"/>
</Quota>