MonetizationLimitsCheck 政策

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

概览

通过 MonetizeLimitsCheck 政策,您可以对应用开发者进行的 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>

示例

以下示例展示了 MonetizeLimitsCheck 政策定义:

<?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 必需

政策的内部名称。name 属性的值可以包含字母、数字、空格、连字符、下划线和英文句点。此值不能超过 255 个字符。

(可选)使用 <DisplayName> 元素在管理界面代理编辑器中给政策添加不同的自然语言名称标签。

continueOnError false 可选 设置为“false” 可在政策失败时返回错误。这是大多数政策的预期行为。如果设置为“true”,则即使政策失败,仍可继续执行流。
enabled 可选 设为“true”可强制执行政策。设为“false”可“关闭”政策。即使政策仍附加到某个流,也不会强制执行该政策。
async   false 已弃用 此属性已弃用。

子元素参考

本部分介绍 <MonetizationLimitsCheck> 的子元素。

<DisplayName>

除了用于 name 属性之外,还可用于在管理界面代理编辑器中使用其他更加自然的名称标记政策。

<DisplayName> 元素适用于所有政策。

默认值 不适用
是否必需? 可选。如果省略 <DisplayName>,则会使用政策的 name 属性的值
类型 字符串
父元素 <PolicyElement>
子元素

<DisplayName> 元素使用以下语法:

语法

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

示例

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> 元素没有属性或子元素。

<IgnoreUnresolvedVariables>

确定在 Apigee 遇到未解析的变量时是否应停止政策处理。

默认值
是否必需? 选填
类型 布尔值
父元素 <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 产品名称。Apigee 会使用 API 产品名称获取产品的相应费率方案,并执行创收限制检查。

默认值 不适用
是否必需? 选填
类型 复杂类型
父元素 <MonetizationLimitsCheck>
子元素 <Product>

<Variables> 元素使用以下语法:

语法

<Variables>
    <Product>VARIABLE_NAME</Product>
</Variables>

示例

以下示例从 API 代理流程中显示的 myproductvar.name 自定义流程变量中获取 API 产品名称。

<Variables>
    <Product>myproductvar.name</Product>
</Variables>

您可以使用 AssignMessageJavaScript 等政策设置自定义流变量。

<Product>

指定具有 API 产品名称的变量。

默认值 不适用
是否必需? 选填
类型 字符串
父元素 <Variables>
子元素

<Product> 元素使用以下语法:

语法

<Product>VARIABLE_NAME</Product>

示例

以下示例从 API 代理流程中显示的 myproductvar.name 自定义流程变量中获取 API 产品名称。

<Product>myproductvar.name</Product>

您可以使用 AssignMessageJavaScript 等政策设置自定义流变量。

<FaultResponse>

定义在发生故障时返回给请求客户端的响应消息。 您可以根据自己的要求自定义响应消息。如需详细了解该元素及其所有子元素,请参阅 FaultResponse

流变量

如果将 <MonetizationLimitsCheck> 元素的 ContinueOnError 属性设置为 true,则不会引发任何错误。在这种情况下,系统会自动设置流变量 mint.limitsViolatedmint.isDeveloperSuspendedmint.limitsPolicyError。如果需要,这些变量可用于执行进一步的异常处理。