Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
InvalidMessageWeight
Codice di errore
policies.ratelimit.InvalidMessageWeight
Corpo della risposta di errore
{
"fault": {
"faultstring": "Invalid message weight value [invalid_value]",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Esempio di messaggio di errore
{
"fault": {
"faultstring": "Invalid message weight value 1.5",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Causa
Questo errore si verifica se il valore dell'elemento <MessageWeight>
specificato tramite una variabile di flusso non è valido (un valore non intero).
Ad esempio, questo errore si verifica se il valore della variabile di flusso specificato per l'elemento <MessageWeight>
è 1,5 (un valore non intero).
Diagnosi
Identifica il valore non valido utilizzato per l'elemento
<MessageWeight>
nel criterio di quota. Puoi trovare queste informazioni nell'elementofaultstring
della risposta all'errore. Ad esempio, nel seguente errore, il valore non valido utilizzato per l'elemento<MessageWeight>
è1.5
:"faultstring": "Invalid message weight value 1.5"
Esamina tutti i criteri per le quote nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri di quota in cui è specificato l'elemento
<MessageWeight>
.Ad esempio, il seguente criterio specifica la
<MessageWeight>
tramite una variabile di flussomessage_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 il valore della variabile utilizzata per
<MessageWeight>
nei criteri per le quote identificati. Il valore della variabile di flusso può essere estratto dalle intestazioni HTTP, parametri di ricerca, dal payload della richiesta XML o JSON o definito in un'altra norma:- Individua il codice all'interno del bundle del proxy API in cui è stata definita per la prima volta la variabile.
- Una volta individuato il criterio in cui la variabile è definita e compilata per la prima volta, controlla come viene impostato il valore della variabile.
- Se il valore della variabile di flusso corrisponde a quello identificato nel passaggio 1 qui sopra, è la causa dell'errore.
Ad esempio, supponiamo che un criterio JavaScript utilizzato prima del criterio per le quote imposti la variabile
message_weight
in base al tipo di richiesta, come mostrato di seguito:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
Tieni presente che il valore della variabile
message_weight
è1.5
, che non è un valore valido (non intero).
Risoluzione
Assicurati che il valore che rappresenta MessageWeight
specificato dalla variabile di flusso sia un valore valido (intero).
Per correggere l'esempio mostrato sopra, puoi modificare il valore della variabile message_weight
in JavaScript in modo che sia un numero intero.
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveQuotaIntervalReference
Codice di errore
policies.ratelimit.FailedToResolveQuotaIntervalReference
Corpo della risposta di errore
{
"fault": {
"faultstring": "Failed to resolve quota interval reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Esempio di messaggio di errore
{
"fault": {
"faultstring": "Failed to resolve quota interval reference api.product.developer.quota.interval in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Causa
Questo errore si verifica se l'elemento <Interval>
non è definito nel criterio di quota. Questo elemento è obbligatorio e viene utilizzato per specificare l'intervallo di tempo applicabile alla quota. L'intervallo di tempo può essere in minuti, ore, giorni, settimane o mesi, come definito con l'elemento <TimeUnit>
.
Diagnosi
Esamina ciascuno dei criteri per le quote nel proxy API in cui si è verificato l'errore. Se esiste un criterio di quota in cui non è definito l'elemento obbligatorio
<Interval>
, questo è il motivo dell'errore.Ad esempio, il seguente criterio di quota non contiene l'elemento obbligatorio
<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>
Poiché l'elemento obbligatorio
<TimeUnit>
non è definito nel criterio di quota riportato sopra, riceverai il codice di errore:policies.ratelimit.FailedToResolveQuotaIntervalReference
Risoluzione
Assicurati che tutti i criteri per le quote per un determinato proxy API abbiano l'elemento obbligatorio <Interval>
definito correttamente.
Per correggere l'esempio riportato sopra, puoi modificare il criterio in modo da includere l'elemento <Interval>
come mostrato di seguito.
<?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
Codice di errore
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Corpo della risposta di errore
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Esempio di messaggio di errore
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference apiproduct.developer.quota.timeunity in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Causa
Questo errore si verifica se l'elemento <TimeUnit>
non è definito nel criterio di quota. Questo elemento è obbligatorio e viene utilizzato per specificare l'unità di tempo applicabile alla quota. L'intervallo di tempo può essere espresso in minuti, ore, giorni, settimane o mesi.
Diagnosi
Esamina ciascuno dei criteri per le quote nel proxy API in cui si è verificato l'errore. Se esiste un criterio di quota in cui non è definito l'elemento obbligatorio
<TimeUnit>
, questo è il motivo dell'errore.Ad esempio, il seguente criterio di quota non contiene l'elemento obbligatorio
<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>
Poiché l'elemento obbligatorio
<TimeUnit>
non è definito nel criterio di quota riportato sopra, riceverai il codice di errore:policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Risoluzione
Assicurati che tutti i criteri per le quote per un determinato proxy API abbiano definito l'elemento obbligatorio <TimeUnit>
.
Per correggere l'esempio riportato sopra, puoi modificare il criterio in modo da includere l'elemento <TimeUnit>
come mostrato di seguito.
<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>