Estás viendo la documentación de Apigee Edge.
Ve a la
documentación de Apigee X. info
InvalidMessageWeight
Código de error
policies.ratelimit.InvalidMessageWeight
Cuerpo de la respuesta de error
{
"fault": {
"faultstring": "Invalid message weight value [invalid_value]",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "Invalid message weight value 1.5",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Causa
Este error se produce si el valor del elemento <MessageWeight>
que se especificó a través de una variable de flujo no es válido (un valor de un número que no es entero).
Por ejemplo, se producirá este error si el valor de la variable de flujo especificado para el elemento <MessageWeight>
es 1.5 (un valor de un número que no es entero).
Diagnóstico
Identifica el valor no válido que se usa para el elemento
<MessageWeight>
en la política de cuotas. Puedes encontrar esta información en el elementofaultstring
de la respuesta de error. Por ejemplo, en el siguiente error, el valor no válido que se usa para el elemento<MessageWeight>
es1.5
:"faultstring": "Invalid message weight value 1.5"
Examine todas las políticas de cuotas en el proxy de API específico en el que se produjo el error. Podría haber una o más políticas de cuotas en las que se especifica el elemento
<MessageWeight>
.Por ejemplo, la siguiente política especifica el
<MessageWeight>
a través de una variable de flujomessage_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>
Determina el valor de la variable que se usa para
<MessageWeight>
en las políticas de cuota identificadas. El valor de la variable de flujo se puede extraer de los encabezados HTTP, los parámetros de consulta, la carga útil de solicitud XML o JSON o se define en otra política:- Ubica el código en el paquete del proxy de API, en el que la variable se definió primero.
- Una vez que descubras la política en la que se define y propaga la variable primero, verifica cómo se establece su valor.
- Si el valor de la variable de flujo coincide con el valor identificado en el paso 1, esa es la causa del error.
Por ejemplo, supongamos que una política de JavaScript que se usó antes de que la política de cuotas establece la variable
message_weight
según el tipo de solicitud, como se muestra a continuación:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
Ten en cuenta que el valor de la variable
message_weight
es1.5
, que no es un valor no válido (un número que no es entero).
Solución
Asegúrate de que el valor que representa el MessageWeight
especificado por la variable de flujo sea un valor válido (valor de número entero).
Para corregir el ejemplo anterior, puedes modificar el valor de la variable message_weight
en JavaScript como un número entero.
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveQuotaIntervalReference
Código de error
policies.ratelimit.FailedToResolveQuotaIntervalReference
Cuerpo de la respuesta de error
{
"fault": {
"faultstring": "Failed to resolve quota interval reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "Failed to resolve quota interval reference api.product.developer.quota.interval in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Causa
Este error se genera si el elemento <Interval>
no se define en la política de cuotas. Este elemento es obligatorio y se usa para especificar el intervalo de tiempo aplicable a la cuota. El intervalo de tiempo pueden ser minutos, horas, días, semanas o meses, según se defina con el elemento <TimeUnit>
.
Diagnóstico
Examine cada una de las políticas de cuota en el proxy de API en el que se produjo el error. Si existe una política de cuotas en la que el elemento obligatorio
<Interval>
no está definido, esa es la causa del error.Por ejemplo, la siguiente política de cuotas no tiene el elemento obligatorio
<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>
Debido a que el elemento obligatorio
<TimeUnit>
no está definido en la política de cuota anterior, recibirá el siguiente código de error:policies.ratelimit.FailedToResolveQuotaIntervalReference
Solución
Asegúrate de que todas las políticas de cuota para un proxy de API determinado tengan el elemento obligatorio <Interval>
definido de forma correcta.
Para corregir el ejemplo anterior, puedes modificar la política a fin de incluir el elemento <Interval>
como se muestra a continuación.
<?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
Código de error
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Cuerpo de la respuesta de error
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference apiproduct.developer.quota.timeunity in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Causa
Este error se genera si el elemento <TimeUnit>
no se define en la política de cuotas. Este elemento es obligatorio y se usa para especificar la unidad de tiempo aplicable a la cuota. El intervalo de tiempo puede ser en minutos, horas, días, semanas o meses.
Diagnóstico
Examine cada una de las políticas de cuota en el proxy de API en el que se produjo el error. Si existe una política de cuotas en la que el elemento obligatorio
<TimeUnit>
no está definido, esa es la causa del error.Por ejemplo, la siguiente política de cuotas no tiene el elemento obligatorio
<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>
Debido a que el elemento obligatorio
<TimeUnit>
no está definido en la política de cuota anterior, recibirá el siguiente código de error:policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Solución
Asegúrate de que todas las políticas de cuotas para un proxy de API determinado tengan el elemento obligatorio <TimeUnit>
definido.
Para corregir el ejemplo anterior, puedes modificar la política a fin de incluir el elemento <TimeUnit>
como se muestra a continuación.
<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>