Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
InvalidMessageWeight
Код ошибки
policies.ratelimit.InvalidMessageWeight
Тело ответа об ошибке
{
"fault": {
"faultstring": "Invalid message weight value [invalid_value]",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Пример сообщения об ошибке
{
"fault": {
"faultstring": "Invalid message weight value 1.5",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Причина
Эта ошибка возникает, если значение элемента <MessageWeight> , указанного через переменную потока, является недопустимым (нецелочисленным значением).
Например, эта ошибка возникнет, если значение переменной потока, указанной для элемента <MessageWeight> , равно 1,5 (нецелочисленное значение).
Диагноз
Определите недопустимое значение, использованное для элемента
<MessageWeight>в политике квот. Эту информацию можно найти в элементеfaultstringответа об ошибке. Например, в следующей ошибке недопустимое значение для элемента<MessageWeight>равно1.5:"faultstring": "Invalid message weight value 1.5"Проверьте все политики квот в конкретном API-прокси, где произошла ошибка. Возможно, в одной или нескольких политиках квот указан элемент
<MessageWeight>.Например, следующая политика задает значение
<MessageWeight>через переменную потокаmessage_weight:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Quota async="false" continueOnError="false" enabled="true" name="Quota_with_weight" type="calendar"> <DisplayName>Quota_with_weight</DisplayName> <Properties/> <Allow count="3"/> <Interval>1</Interval> <TimeUnit>minute</TimeUnit> <StartTime>2017-7-16 12:00:00</StartTime> <MessageWeight ref="message_weight"/> </Quota>Определите значение переменной, используемой для
<MessageWeight>в указанной политике(ях) квотирования. Значение переменной потока может быть извлечено из HTTP-заголовков, параметров запроса, полезной нагрузки XML или JSON-запроса или определено в другой политике:- Найдите в пакете API Proxy тот фрагмент кода, где эта переменная была определена впервые.
- После того, как вы определите, в соответствии с какой политикой определяется и заполняется переменная, проверьте, как устанавливается значение этой переменной.
- Если значение переменной потока совпадает со значением, определенным на шаге №1 выше, то это и является причиной ошибки.
Например, предположим, что политика JavaScript, используемая до политики квот, устанавливает переменную
message_weightв зависимости от типа запроса, как показано ниже:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }Обратите внимание, что значение переменной
message_weightравно1.5, что является недопустимым (нецелым) значением.
Разрешение
Убедитесь, что значение, представляющее MessageWeight указанное в переменной потока, является допустимым (целочисленным).
Чтобы исправить приведенный выше пример, вы можете изменить значение переменной message_weight в JavaScript на целое число.
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveQuotaIntervalReference
Код ошибки
policies.ratelimit.FailedToResolveQuotaIntervalReference
Тело ответа об ошибке
{
"fault": {
"faultstring": "Failed to resolve quota interval reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Пример сообщения об ошибке
{
"fault": {
"faultstring": "Failed to resolve quota interval reference api.product.developer.quota.interval in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Причина
Эта ошибка возникает, если элемент <Interval> не определен в политике квот. Этот элемент является обязательным и используется для указания временного интервала, применимого к квоте. Временной интервал может быть минутами, часами, днями, неделями или месяцами, как определено с помощью элемента <TimeUnit> .
Диагноз
Проверьте каждую из политик квот в API-прокси, где произошла ошибка. Если в какой-либо политике квот отсутствует обязательный элемент
<Interval>, то это и является причиной ошибки.Например, в следующей политике квот отсутствует обязательный элемент
<Interval>:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar"> <DisplayName>CheckQuota</DisplayName> <Properties/> <Allow count="3"/> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <StartTime>2017-7-16 12:00:00</StartTime> </Quota>Поскольку обязательный элемент
<TimeUnit>не определен в указанной выше политике квот, вы получите код ошибки:policies.ratelimit.FailedToResolveQuotaIntervalReference
Разрешение
Убедитесь, что для всех политик квотирования для данного API-прокси обязательное условие <Interval> определено должным образом.
Чтобы исправить приведенный выше пример, вы можете изменить политику, добавив элемент <Interval> как показано ниже.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar"> <DisplayName>CheckQuota</DisplayName> <Properties/> <Allow count="3"/> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <StartTime>2017-7-16 12:00:00</StartTime> </Quota>
FailedToResolveQuotaIntervalTimeUnitReference
Код ошибки
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Тело ответа об ошибке
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Пример сообщения об ошибке
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference apiproduct.developer.quota.timeunity in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Причина
Эта ошибка возникает, если элемент <TimeUnit> не определен в политике квот. Этот элемент является обязательным и используется для указания единицы времени, применимой к квоте. Временной интервал может быть в минутах, часах, днях, неделях или месяцах.
Диагноз
Проверьте каждую из политик квот в API-прокси, где произошла ошибка. Если в какой-либо политике квот отсутствует обязательный элемент
<TimeUnit>, то это и является причиной ошибки.Например, в следующей политике квот отсутствует обязательный элемент
<TimeUnit>:<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar"> <DisplayName>CheckQuota</DisplayName> <Properties/> <Allow count="3"/> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <StartTime>2017-7-16 12:00:00</StartTime> </Quota>Поскольку обязательный элемент
<TimeUnit>не определен в указанной выше политике квот, вы получите код ошибки:policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Разрешение
Убедитесь, что для всех политик квотирования для данного API-прокси определен обязательный элемент <TimeUnit> .
Чтобы исправить приведенный выше пример, вы можете изменить политику, добавив элемент <TimeUnit> , как показано ниже.
<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar"> <DisplayName>CheckQuota</DisplayName> <Properties/> <Allow count="3"/> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <StartTime>2017-7-16 12:00:00</StartTime> </Quota>