Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
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 код, в котором переменная была определена впервые.
- Определив правило, в котором переменная задается и заполняется первой, проверьте, как устанавливается значение переменной.
- Если значение переменной потока совпадает со значением, определенным на шаге 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>