Вы просматриваете документацию по 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.
Установка значения true для элемента <IgnoreUnresolvedVariables> отличается от установки значения true для элемента continueOnError в <MonetizationLimitsCheck>. Если вы зададите для 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 будут заданы автоматически. Эти переменные можно использовать для дальнейшей обработки исключений, если это необходимо.