Ограничения монетизацииПроверьте политику

Вы просматриваете документацию 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 .

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