您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
概览
借助 MonetizationLimitsCheck 政策,您可以对应用开发者发出的 API 调用强制执行获利限制。
以下是一些触发此政策的情况:
- 访问获利 API 的应用开发者尚未购买关联 API 产品的订阅
- 开发者的账号余额不足。
- 开发者已超出交易量限制。
如需了解如何将此政策附加到 API 代理,请参阅 对 API 代理实施获利限制。
<MonetizationLimitsCheck> 元素
指定 MonetizationLimitsCheck 政策。
| 默认值 | 不适用 |
| 是否必需? | 必需 |
| 类型 | 复杂类型 |
| 父元素 | 不适用 |
| 子元素 |
<DisplayName><FaultResponse><IgnoreUnresolvedVariables><Variables> |
下表提供了 <MonetizationLimitsCheck> 的子元素的简要说明:
| 子元素 | 是否必需? | 说明 |
|---|---|---|
<DisplayName> |
可选 | 政策的自定义名称。 |
<FaultResponse> |
可选 | 指定引发故障时返回给发出请求的客户端的响应消息。 |
<IgnoreUnresolvedVariables> |
可选 | 确定在遇到无法解析的变量时处理是否停止。 |
<Variables> |
可选 | 指定要检查获利限制的流变量。 |
<MonetizationLimitsCheck> 元素使用以下语法:
语法
<?xml version="1.0" encoding="UTF-8"?> <MonetizationLimitsCheck async="false" continueOnError="false" enabled="true" name="POLICY_NAME"> <DisplayName>DISPLAY_NAME</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <Variables> <Product>VARIABLE_NAME</Product> </Variables> <FaultResponse> <Set> <Payload contentType="text/xml"> <error> <messages> <message>MESSAGE_TEXT</message> <message>MESSAGE_TEXT</message> </messages> </error> </Payload> <StatusCode>HTTP_STATUS</StatusCode> <ReasonPhrase>REASON_TEXT</ReasonPhrase> </Set> </FaultResponse> </MonetizationLimitsCheck>
示例
以下示例展示了 MonetizationLimitsCheck 政策的定义:
<?xml version="1.0" encoding="UTF-8"?> <MonetizationLimitsCheck async="false" continueOnError="false" enabled="true" name="Monetization-Limits-Check"> <DisplayName>Monetization Limits Check</DisplayName> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <Variables> <Product>myproductvar.name</Product> </Variables> <FaultResponse> <Set> <Payload contentType="text/xml"> <error> <messages> <message>Developer has reached usage quota</message> <message>Is Developer Suspended - {monetizationLimits.isDeveloperSuspended} </message> </messages> </error> </Payload> <StatusCode>403</StatusCode> <ReasonPhrase>Forbidden</ReasonPhrase> </Set> </FaultResponse> </MonetizationLimitsCheck>
此元素具有所有政策中常见的以下属性:
| 属性 | 默认 | 是否必需? | 说明 |
|---|---|---|---|
name |
N/A | 必需 |
政策的内部名称。 (可选)使用 |
continueOnError |
false | 可选 | 设置为“false” 可在政策失败时返回错误。这是大多数政策的预期行为。如果设置为“true”,则即使政策失败,仍可继续执行流。 |
enabled |
是 | 可选 | 设为“true”可强制执行政策。设为“false”可“关闭”政策。即使政策仍附加到某个流,也不会强制执行该政策。 |
async |
false | 已弃用 | 此属性已弃用。 |
子元素参考
本部分介绍<MonetizationLimitsCheck> 的子元素。
<DisplayName>
除了用于 name 属性之外,还可用于在管理界面代理编辑器中使用其他更加自然的名称标记政策。
<DisplayName> 元素适用于所有政策。
| 默认值 | 不适用 |
| 是否必需? | 可选。如果省略 <DisplayName>,则会使用政策的 name 属性的值 |
| Type | 字符串 |
| 父元素 | <PolicyElement> |
| 子元素 | 无 |
<DisplayName> 元素使用以下语法:
语法
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
示例
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName> 元素没有属性或子元素。
<IgnoreUnresolvedVariables>
确定在 Apigee 遇到无法解析的变量时,是否应停止处理政策。
| 默认值 | True |
| 是否必需? | 可选 |
| 类型 | 布尔值 |
| 父元素 |
<MonetizationLimitsCheck> |
| 子元素 | 无 |
如需忽略无法解析的变量并继续处理,请将值设置为 true;
否则设置为 false。默认值为 true。
将 <IgnoreUnresolvedVariables> 设置为 true 与将 <MonetizationLimitsCheck> 元素的
continueOnError 设置为 true 不同。如果您将 continueOnError 设置为 true,则 Apigee 不仅会忽略变量错误,还会忽略所有错误。
<IgnoreUnresolvedVariables> 元素使用以下语法:
语法
<IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
示例
以下示例将 <IgnoreUnresolvedVariables> 设置为 false:
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<Variables>
指定您希望在政策执行期间从中提取 实体或资源名称的流变量。
您只能在 <Variables> 元素中指定 <Product> 元素。Apigee 会从 <Product> 元素中指定的流变量获取 API 产品名称。如果您未指定 <Variables> 元素,则 Apigee 默认会从 apiproduct.name 上下文变量获取 API 产品名称。通过使用 API 产品名称,Apigee 可以获取该产品的相应费率方案并执行获利限制检查。
| 默认值 | 不适用 |
| 是否必需? | 可选 |
| 类型 | 复杂类型 |
| 父元素 |
<MonetizationLimitsCheck> |
| 子元素 |
<Product> |
<Variables> 元素使用以下语法:
语法
<Variables>
<Product>VARIABLE_NAME</Product>
</Variables>示例
以下示例从 myproductvar.name 自定义流变量
获取 API 产品名称,该变量存在于您的 API 代理流中。
<Variables> <Product>myproductvar.name</Product> </Variables>
您可以使用 AssignMessage 或 JavaScript 等政策设置自定义流变量。
<Product>
指定具有 API 产品名称的变量。
| 默认值 | 不适用 |
| 是否必需? | 可选 |
| 类型 | 字符串 |
| 父元素 |
<Variables> |
| 子元素 | 无 |
<Product> 元素使用以下语法:
语法
<Product>VARIABLE_NAME</Product>
示例
以下示例从 myproductvar.name 自定义流变量
中获取 API 产品名称,该变量存在于您的 API 代理流中。
<Product>myproductvar.name</Product>
您可以使用 AssignMessage 或 JavaScript 等政策设置自定义流变量。
<FaultResponse>
定义在引发故障时返回给发出请求的客户端的响应消息。 您可以根据自己的要求自定义响应 消息。如需详细了解此 元素及其所有子元素,请参阅FaultResponse。
流变量
如果您将 <MonetizationLimitsCheck> 元素的
ContinueOnError 属性设置为 true,则不会引发任何故障。在这种情况下,系统会自动设置
流变量 mint.limitsViolated、mint.isDeveloperSuspended 和
mint.limitsPolicyError。如果需要,这些变量可用于
执行进一步的异常处理。