Wyświetlasz 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, jeśli wartość elementu <MessageWeight>
określonej za pomocą zmiennej przepływu jest nieprawidłowa (nie jest całkowita).
Ten błąd wystąpi na przykład, gdy wartość zmiennej przepływu określona dla elementu <MessageWeight>
wynosi 1,5 (wartość niebędąca liczbą całkowitą).
Diagnostyka
Odszukaj nieprawidłową wartość elementu
<MessageWeight>
w zasadach dotyczących limitu. Te informacje znajdziesz w elemenciefaultstring
odpowiedzi na błąd. Na przykład w tym błędzie nieprawidłowa wartość elementu<MessageWeight>
to1.5
:"faultstring": "Invalid message weight value 1.5"
Sprawdź wszystkie zasady dotyczące limitu w przypadku konkretnego interfejsu API Proxy, w którym wystąpił błąd. Może istnieć co najmniej 1 zasada dotycząca limitu, w której podano element
<MessageWeight>
.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 w przypadku
<MessageWeight>
w zidentyfikowanych zasadach dotyczących limitu. 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ą określoną w kroku 1 powyżej, to jest to przyczyna błędu.
Załóżmy na przykład, że zasada JavaScript używana przed zasadą dotyczącą limitu określa zmienną
message_weight
na podstawie typu żądania w ten sposób: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
, czyli nieprawidłowa (niebędąca liczbą całkowitą) wartość.
Rozdzielczość
Upewnij się, że wartość reprezentująca MessageWeight
określoną przez zmienną przepływu jest prawidłowa (wartość całkowita).
Aby poprawić powyższy przykład, możesz zmienić wartość zmiennej message_weight
w JavaScriptzie 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 jest zdefiniowany w zasadach dotyczących limitu. 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ć określony w minutach, godzinach, dniach, tygodniach lub miesiącach za pomocą elementu <TimeUnit>
.
Diagnostyka
Sprawdź wszystkie zasady dotyczące limitu w interfejsie API Proxy, w których wystąpił błąd. Jeśli w zasadach dotyczących limitu nie jest zdefiniowany element
<Interval>
, jest to przyczyna błędu.Na przykład te zasady dotyczące limitu nie zawierają elementu obowiązkowego
<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ż element obowiązkowy
<TimeUnit>
nie jest zdefiniowany w powyższych zasadach dotyczących limitu, otrzymasz kod błędu:policies.ratelimit.FailedToResolveQuotaIntervalReference
Rozdzielczość
Upewnij się, że wszystkie zasady dotyczące limitów dla danego serwera proxy interfejsu API mają prawidłowo zdefiniowany element <Interval>
.
Aby poprawić powyższy przykład, możesz zmodyfikować zasadę, aby zawierał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ć podany 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 istnieje zasada dotycząca limitów, w której wymagany element
<TimeUnit>
nie jest zdefiniowany, to to jest przyczyną 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ć powyższy przykład, możesz zmodyfikować zasadę, aby zawierał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>