Правило MonetizationLimitsCheck

Вы просматриваете документацию по 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 Н/Д Необходимый

Внутреннее имя политики. Значение атрибута name может содержать буквы, цифры, пробелы, дефисы, символы подчеркивания и точки. Это значение не может превышать 255 символов.

При необходимости используйте элемент <DisplayName> , чтобы пометить политику в редакторе прокси-сервера пользовательского интерфейса управления другим именем на естественном языке.

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