Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
InvalidMessageWeight
Kod błędu
policies.ratelimit.InvalidMessageWeight
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Invalid message weight value [invalid_value]",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Invalid message weight value 1.5",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Przyczyna
Ten błąd występuje, gdy wartość elementu <MessageWeight>
określona za pomocą zmiennej przepływu jest nieprawidłowa (wartość niebędąca liczbą całkowitą).
Ten błąd wystąpi na przykład wtedy, gdy wartość zmiennej przepływu określonej dla elementu <MessageWeight>
wynosi 1,5 (nie jest całkowita).
Diagnostyka
Znajdź nieprawidłową wartość używaną w elemencie
<MessageWeight>
w zasadzie dotyczącej limitów. Te informacje znajdziesz w elemenciefaultstring
odpowiedzi na błąd. Na przykład w tym błędzie nieprawidłowa wartość użyta w elemencie<MessageWeight>
to1.5
:"faultstring": "Invalid message weight value 1.5"
Sprawdź wszystkie zasady dotyczące limitów na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Element
<MessageWeight>
może zawierać co najmniej 1 zasadę dotyczącą limitów.Na przykład ta zasada określa
<MessageWeight>
zmienną przez zmienną przepływumessage_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>
Określ wartość zmiennej używanej dla funkcji
<MessageWeight>
w określonych zasadach limitów. Wartość zmiennej przepływu można wyodrębnić z nagłówków HTTP, parametrów zapytania, ładunku XML lub ładunku JSON albo zdefiniować w innej regule:- Znajdź kod w pakiecie serwera proxy interfejsu API, w którym najpierw zdefiniowano zmienną.
- Gdy ustalisz zasadę, zgodnie z którą zmienna jest zdefiniowana i wypełniana najpierw, sprawdź, jak ustawiana jest wartość zmiennej.
- Jeśli wartość zmiennej przepływu jest zgodna z wartością podaną w kroku 1 powyżej, to jest to przyczyna błędu.
Załóżmy na przykład, że zasada JavaScript użyta przed zasadą limitów ustawia zmienną
message_weight
na podstawie typu żądania, jak pokazano poniżej:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
Zwróć uwagę, że wartość zmiennej
message_weight
to1.5
. Jest to wartość nieprawidłowa (która nie jest liczbą całkowitą).
Rozdzielczość
Upewnij się, że wartość reprezentująca właściwość MessageWeight
określoną przez zmienną przepływu jest prawidłową wartością (całkowitą).
Aby poprawić ten przykład, zmień wartość zmiennej message_weight
w kodzie JavaScript na liczbę całkowitą.
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveQuotaIntervalReference
Kod błędu
policies.ratelimit.FailedToResolveQuotaIntervalReference
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Failed to resolve quota interval reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Failed to resolve quota interval reference api.product.developer.quota.interval in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Przyczyna
Ten błąd występuje, jeśli element <Interval>
nie został zdefiniowany w zasadzie limitów. Ten element jest wymagany i służy do określania przedziału czasu obowiązującego w przypadku limitu. Przedział czasu może być wyrażony w minutach, godzinach, dniach, tygodniach lub miesiącach zgodnie z definicją za pomocą elementu <TimeUnit>
.
Diagnostyka
Sprawdź każdą zasadę dotyczącą limitów na serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitów, w której wymagany element
<Interval>
nie jest zdefiniowany, to to jest przyczyną błędu.Na przykład te zasady dotyczące limitów nie mają obowiązkowego elementu
<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>
Ponieważ obowiązkowy element
<TimeUnit>
nie został zdefiniowany w powyższych zasadach dotyczących limitów, otrzymasz kod błędu:policies.ratelimit.FailedToResolveQuotaIntervalReference
Rozdzielczość
Sprawdź, czy wszystkie zasady limitów dla danego serwera proxy interfejsu API mają poprawnie zdefiniowany wymagany element <Interval>
.
Aby poprawić przykład powyżej, możesz zmodyfikować zasadę, tak aby obejmowała element <Interval>
, jak pokazano poniżej.
<?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
Kod błędu
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference apiproduct.developer.quota.timeunity in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Przyczyna
Ten błąd występuje, jeśli element <TimeUnit>
nie został zdefiniowany w zasadzie limitów. Ten element jest wymagany i służy do określania jednostki czasu mającej zastosowanie do limitu. Przedział czasu może być wyrażony w minutach, godzinach, dniach, tygodniach lub miesiącach.
Diagnostyka
Sprawdź każdą zasadę dotyczącą limitów na serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli w zasadach dotyczących limitu nie jest zdefiniowany element
<TimeUnit>
, jest to przyczyna błędu.Na przykład te zasady dotyczące limitów nie mają obowiązkowego elementu
<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>
Ponieważ obowiązkowy element
<TimeUnit>
nie został zdefiniowany w powyższych zasadach dotyczących limitów, otrzymasz kod błędu:policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Rozdzielczość
Upewnij się, że wszystkie zasady dotyczące limitu dla danego serwera proxy API zawierają zdefiniowany element <TimeUnit>
.
Aby poprawić przykład powyżej, możesz zmodyfikować zasadę, tak aby obejmowała element <TimeUnit>
, jak pokazano poniżej.
<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>