Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Обзор
Политика 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 | Н/Д | Необходимый | Внутреннее имя политики. Значение атрибута При необходимости используйте элемент |
continueOnError | ЛОЖЬ | Необязательный | Установите значение «false», чтобы возвращать ошибку при сбое политики. Это ожидаемое поведение для большинства политик. Установите значение «true», чтобы выполнение потока продолжалось даже после сбоя политики. |
enabled | истинный | Необязательный | Установите значение «true», чтобы применить политику. Установите значение «false», чтобы «отключить» политику. Политика не будет применяться, даже если она остается присоединенной к потоку. |
async | ЛОЖЬ | Устаревший | Этот атрибут устарел. |
Ссылка на дочерний элемент
В этом разделе описаны дочерние элементы<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 отличается от установки для continueOnError элемента <MonetizationLimitsCheck> значения true . Если вы установите для continueOnError значение true , Apigee игнорирует не только ошибки переменных, но и все ошибки.
Элемент <IgnoreUnresolvedVariables> использует следующий синтаксис:
Синтаксис
<IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
Пример
В следующем примере для <IgnoreUnresolvedVariables> устанавливается значение false :
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<Variables>
Указывает переменные потока, из которых вы хотите получить имена сущностей или ресурсов во время выполнения политики.
Внутри элемента <Variables> можно указать только элемент <Product> . Apigee получает название продукта API из переменной потока, указанной в элементе <Product> . Если вы не укажете элемент <Variables> , Apigee по умолчанию получит имя продукта API из контекстной переменной apiproduct.name . Используя название продукта API, Apigee получает соответствующий тарифный план для продукта и выполняет проверку лимитов монетизации.
| Значение по умолчанию | Н/Д |
| Необходимый? | Необязательный |
| Тип | Сложный тип |
| Родительский элемент | <MonetizationLimitsCheck> |
| Дочерние элементы | <Product> |
Элемент <Variables> использует следующий синтаксис:
Синтаксис
<Variables>
<Product>VARIABLE_NAME</Product>
</Variables>Пример
В следующем примере имя продукта API получается из пользовательской переменной потока myproductvar.name , присутствующей в потоке прокси-сервера API.
<Variables> <Product>myproductvar.name</Product> </Variables>
Вы можете установить пользовательские переменные потока с помощью таких политик, как AssignMessage или JavaScript .
<Product>
Указывает переменную, имеющую название продукта API.
| Значение по умолчанию | Н/Д |
| Необходимый? | Необязательный |
| Тип | Нить |
| Родительский элемент | <Variables> |
| Дочерние элементы | Никто |
Элемент <Product> использует следующий синтаксис:
Синтаксис
<Product>VARIABLE_NAME</Product>
Пример
В следующем примере имя продукта API получается из пользовательской переменной потока myproductvar.name , присутствующей в потоке прокси-сервера API.
<Product>myproductvar.name</Product>
Вы можете установить пользовательские переменные потока с помощью таких политик, как AssignMessage или JavaScript .
<FaultResponse>
Определяет ответное сообщение, возвращаемое запрашивающему клиенту в случае возникновения ошибки. Вы можете настроить ответные сообщения в соответствии со своими требованиями. Дополнительные сведения об элементе и всех его дочерних элементах см. в разделе FaultResponse .
Переменные потока
Если для атрибута ContinueOnError элемента <MonetizationLimitsCheck> установлено значение true, ошибка не возникает. В этом случае переменные потока mint.limitsViolated , mint.isDeveloperSuspended и mint.limitsPolicyError устанавливаются автоматически. При необходимости эти переменные можно использовать для дальнейшей обработки исключений.