您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
總覽
您可以透過 MonetizationLimitsCheck 政策,對應用程式開發人員發出的 API 呼叫強制執行營利限制。
以下列舉一些會觸發政策的情況:
- 如果存取營利 API 的應用程式開發人員未訂閱相關聯的 API 產品
- 開發人員帳戶餘額不足。
- 開發人員已超過交易量上限。
如要瞭解如何將政策附加至 API Proxy,請參閱「在 API Proxy 中強制實行營利限制」。
<MonetizationLimitsCheck> 元素
指定 MonetizationLimitsCheck 政策。
| 預設值 | N/A |
| 必填與否 | 必填 |
| 類型 | 複雜型別 |
| 父項元素 | 不適用 |
| 子元素 |
<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>
此元素在所有政策中皆包含下列屬性:
| 屬性 | 預設 | 必填與否 | Description |
|---|---|---|---|
name |
無 | 必要 |
政策的內部名稱。 或者,您也可以使用 |
continueOnError |
false | 選填 | 如果設為「false」,當政策失敗時會傳回錯誤。多數政策預期的行為如下。如果設為「true」,則在政策失敗後,仍會繼續執行流程。 |
enabled |
true | 選填 | 設為「true」即可強制執行政策。將政策設為「false」,即可「關閉」政策。即使政策已附加至流程,系統也不會強制執行這項政策。 |
async |
false | 已淘汰 | 這項屬性已淘汰。 |
子元素參照
本節說明<MonetizationLimitsCheck> 的子元素。
<DisplayName>
除了 name 屬性,您也可以使用這個屬性,在管理 UI 代理編輯器中,以更自然易懂的名稱標示政策。
所有政策都有 <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 產品名稱取得產品的相應費率方案,並執行營利限制檢查。
| 預設值 | N/A |
| 必填與否 | 選用 |
| 類型 | 複雜型別 |
| 父項元素 |
<MonetizationLimitsCheck> |
| 子元素 |
<Product> |
<Variables> 元素使用下列語法:
語法
<Variables>
<Product>VARIABLE_NAME</Product>
</Variables>範例
以下範例會從 API Proxy 流程中的 myproductvar.name 自訂流程變數取得 API 產品名稱。
<Variables> <Product>myproductvar.name</Product> </Variables>
您可以使用 AssignMessage 或 JavaScript 等政策設定自訂流程變數。
<Product>
指定含有 API 產品名稱的變數。
| 預設值 | N/A |
| 必填與否 | 選用 |
| 類型 | 字串 |
| 父項元素 |
<Variables> |
| 子元素 | 無 |
<Product> 元素使用下列語法:
語法
<Product>VARIABLE_NAME</Product>
範例
以下範例會從 API Proxy 流程中的 myproductvar.name 自訂流程變數取得 API 產品名稱。
<Product>myproductvar.name</Product>
您可以使用 AssignMessage 或 JavaScript 等政策設定自訂流程變數。
<FaultResponse>
定義發生錯誤時傳回給提出要求用戶端的回應訊息。 您可以根據需求自訂回覆訊息。如要進一步瞭解 元素和所有子項元素,請參閱「FaultResponse」。
流程變數
如果將 <MonetizationLimitsCheck> 元素的 ContinueOnError 屬性設為 true,系統不會引發任何錯誤。在此情況下,系統會自動設定流程變數 mint.limitsViolated、mint.isDeveloperSuspended 和 mint.limitsPolicyError。如有需要,這些變數可用於執行進一步的例外狀況處理作業。