Você está visualizando a documentação do Apigee e do Apigee híbrido .
Veja a documentação do Apigee Edge .
Peso da Mensagem Inválida
Código de erro
policies.ratelimit.InvalidMessageWeight
Corpo de resposta de erro
{
"fault": {
"faultstring": "Invalid message weight value [invalid_value]",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "Invalid message weight value 1.5",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Causa
Este erro ocorre se o valor do elemento <MessageWeight>
especificado por meio de uma variável de fluxo for inválido (um valor não inteiro).
Por exemplo, esse erro ocorrerá se o valor da variável de fluxo especificada para o elemento <MessageWeight>
for 1,5 (um valor não inteiro).
Diagnóstico
Identifique o valor inválido usado para o elemento
<MessageWeight>
na política de cota. Você pode encontrar essa informação no elementofaultstring
da resposta de erro. Por exemplo, no erro a seguir, o valor inválido usado para o elemento<MessageWeight>
é1.5
:"faultstring": "Invalid message weight value 1.5"
Examine todas as políticas de cota no proxy de API específico onde a falha ocorreu. Pode haver uma ou mais políticas de cota nas quais o elemento
<MessageWeight>
esteja especificado.Por exemplo, a política a seguir especifica
<MessageWeight>
por meio de uma variável de fluxomessage_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>
Determine o valor da variável usada para
<MessageWeight>
na(s) Política(s) de Cota identificada(s). O valor da variável de fluxo pode ser extraído de cabeçalhos HTTP, parâmetros de consulta, um payload de solicitação XML ou JSON, ou definido em outra política:- Localize o código dentro do pacote do Proxy da API onde a variável foi definida primeiro.
- Depois de descobrir a política na qual a variável é definida e preenchida, verifique como o valor da variável é definido.
- Se o valor da variável de fluxo corresponder ao valor identificado na Etapa 1 acima, essa é a causa do erro.
Por exemplo, suponha que uma política JavaScript usada antes da Política de Cota defina a variável
message_weight
com base no tipo de solicitação, conforme mostrado abaixo:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
Observe que o valor da variável
message_weight
é1.5
o que é um valor inválido (não inteiro).
Resolução
Certifique-se de que o valor que representa o MessageWeight
especificado pela variável de fluxo seja um valor válido (valor inteiro).
Para corrigir o exemplo mostrado acima, você pode modificar o valor da variável message_weight
no JavaScript para ser um inteiro.
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
Falha na resolução de referência de intervalo de cota
Código de erro
policies.ratelimit.FailedToResolveQuotaIntervalReference
Corpo de resposta de erro
{
"fault": {
"faultstring": "Failed to resolve quota interval reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "Failed to resolve quota interval reference api.product.developer.quota.interval in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Causa
Este erro ocorre se o elemento <Interval>
não estiver definido na política de cota. Este elemento é obrigatório e usado para especificar o intervalo de tempo aplicável à cota. O intervalo de tempo pode ser minutos, horas, dias, semanas ou meses, conforme definido com o elemento <TimeUnit>
.
Diagnóstico
Examine cada uma das políticas de cota no proxy da API onde ocorreu a falha. Se houver alguma política de cota em que o elemento obrigatório
<Interval>
não esteja definido, essa é a causa do erro.Por exemplo, a seguinte política de cota não tem o elemento obrigatório
<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>
Como o elemento obrigatório
<TimeUnit>
não está definido na política de cota acima, você receberá o código de erro:policies.ratelimit.FailedToResolveQuotaIntervalReference
Resolução
Certifique-se de que todas as políticas de cota para um determinado proxy de API tenham o elemento obrigatório <Interval>
definido corretamente.
Para corrigir o exemplo mostrado acima, você pode modificar a política para incluir o elemento <Interval>
, conforme mostrado abaixo.
<?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>
Falha na resolução de referência de unidade de tempo de intervalo de cota
Código de erro
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Corpo de resposta de erro
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference apiproduct.developer.quota.timeunity in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Causa
Este erro ocorre se o elemento <TimeUnit>
não estiver definido na política de cota. Este elemento é obrigatório e usado para especificar a unidade de tempo aplicável à cota. O intervalo de tempo pode ser em minutos, horas, dias, semanas ou meses.
Diagnóstico
Examine cada uma das políticas de cota no proxy da API onde ocorreu a falha. Se houver alguma política de cota em que o elemento obrigatório
<TimeUnit>
não esteja definido, essa é a causa do erro.Por exemplo, a seguinte política de cota não tem o elemento obrigatório
<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>
Como o elemento obrigatório
<TimeUnit>
não está definido na política de cota acima, você receberá o código de erro:policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Resolução
Certifique-se de que todas as políticas de cota para um determinado proxy de API tenham o elemento obrigatório <TimeUnit>
definido.
Para corrigir o exemplo mostrado acima, você pode modificar a política para incluir o elemento <TimeUnit>
, conforme mostrado abaixo.
<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>