Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
InvalidRLPolicy
Kod błędu
policies.resetquota.InvalidRLPolicy
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
Przyczyna
Ten błąd występuje, jeśli zasada dotycząca limitu określona w elemencie <Quota>
zasady resetowania limitu nie jest zdefiniowana na serwerze proxy interfejsu API. Element <Quota>
jest obowiązkowy i identyfikuje docelowe zasady dotyczące limitu, których licznik powinien zostać zaktualizowany za pomocą zasad dotyczących resetowania limitu. Ta docelowa zasada dotycząca limitu musi zostać utworzona i zdefiniowana w tym samym serwerze proxy interfejsu API oraz musi być dostępna podczas przepływu.
Załóżmy na przykład, że element <Quota>
jest zdefiniowany poniżej, ale jeśli MyQuotaPolicy
nie jest zdefiniowany na serwerze proxy interfejsu API, występuje ten błąd.
<Quota name="MyQuotaPolicy">
Diagnostyka
Odszukaj nieprawidłowe imię i nazwisko w zasadach dotyczących limitu, które są określone w zasadach dotyczących resetowania limitu. Nazwa zasady dotyczącej limitu znajdzie się w ciągu tekstowym błędu. Na przykład w następującej informacji o błędzie nazwa zasady dotyczącej limitu to
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
Sprawdź każdą zasadę resetowania limitu na serwerze proxy API, na którym wystąpił błąd. Zidentyfikuj konkretną zasadę Resetowanie limitu, w której zasada limitu określona w obowiązkowym elemencie
<Quota>
odpowiada nazwie określonej w kroku 1 powyżej.Na przykład ta zasada resetowania limitu określa zasadę limitu o nazwie
MyQuotaPolicy
, która jest zgodna z ciągiem znaków błędu:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
Sprawdź, czy ta zasada dotycząca limitu została utworzona i zdefiniowana w tym samym internetowym serwerze proxy. Jeśli w tym samym interfejsie API nie ma limitu, to jest przyczyną błędu.
W wybranym przykładzie zasada dotycząca limitu
MyQuotaPolicy
powinna występować w przepływie przed wykonaniem zasady Reset limituReset_Quota_Demo
.Ponieważ zasada limitów
MyQuotaPolicy
nie istnieje w przepływie, otrzymasz kod błędu:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Rozdzielczość
Upewnij się, że zasada limitów zadeklarowana w elemencie <Quota>
jest zdefiniowana na serwerze proxy interfejsu API. Ta docelowa zasada dotycząca limitu musi być dostępna, gdy zasada Resetowanie limitu jest wykonywana.
FailedToResolveAllowCountRef
Kod błędu
policies.resetquota.FailedToResolveAllowCountRef
Treść odpowiedzi na błąd
Failed to resolve allow count reference reference_name for identifier identifier_name in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision: revision_number;Environment:env_name;Organization:org_name
Przykładowy komunikat o błędzie
Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo
Błąd zwrócony klientowi będzie wyglądał tak: policies.ratelimit.QuotaViolation
.
Przyczyna
Ten błąd występuje, jeśli odwołanie do zmiennej zawierającej liczbę dozwolonych w elemencie <Allow>
zasady nie może zostać przywrócone do wartości. Ten element jest wymagany i określa kwotę, o którą licznik ma zostać zmniejszony.
Diagnostyka
Zidentyfikuj zasadę resetowania limitu, w której wystąpił błąd, oraz nazwę zmiennej referencyjnej, której nie można rozwiązać. Oba te elementy znajdziesz w odpowiedzi na błąd.
Na przykład w tym przykładowym ciągu błędów nazwa zasady to
ResetQuota
, a odwołanie torequest.header.allowcount
:Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
W pliku XML zasad Resetowanie limitu, który nie został zaktualizowany, sprawdź, czy nazwa użytej zmiennej referencyjnej jest zgodna z nazwą referencyjną wskazaną w odpowiedzi na błąd (patrz krok 1 powyżej).
Na przykład ta zasada ustawia element z odwołaniem o nazwie
request.header.allowcount
, które jest zgodne z tym, co jest w błędzie:<ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota"> <DisplayName>ResetQuota</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName"> <Allow ref="request.header.allowcount"/> </Identifier> </Quota> </ResetQuota>
Sprawdź, czy zmienna referencyjna jest zdefiniowana i dostępna w przepływie, w którym działa zasada resetowania limitu.
Jeśli zmienna jest:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest wykonywana zasada) lub
- nie może zostać rozwiązana (nie jest zdefiniowana).
to jest przyczyna błędu.
W wymienionym powyżej przykładzie wartość dozwolonej liczby w elemencie
<Allow>
powinna być pobierana z nagłówka żądania o nazwie allowcount. Zespół Edge nie może jednak przetworzyć żądania request.header.allowcount. Dzieje się tak, gdy nagłówek allowcount nie jest przekazywany w ramach żądania interfejsu API.Oto przykładowe żądanie do interfejsu API, które nie przekazuje w ramach żądania nagłówka allowcount:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Ponieważ nagłówek allowcount nie jest przekazywany jako część żądania, zmienna request.header.allowcount użyta w elemencie
<Allow>
w powyższym poleceniu RESET Quota policy jest niezdefiniowana, więc nie można jej rozwiązać. Otrzymasz więc odpowiedź z błędem:Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
Rozdzielczość
Upewnij się, że zmienna, do której odwołuje się element <Allow>
, istnieje, jest zdefiniowana i dostępna w konkretnym przepływie, w którym działa zasada Resetowanie limitu.
Aby poprawić powyższy przykład, możesz zmodyfikować żądanie, aby zawierało nagłówek allowcount, jak pokazano poniżej:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
FailedToResolveRLPolicy
Kod błędu
policies.resetquota.FailedToResolveRLPolicy
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
Przyczyna
Ten błąd występuje, jeśli nie można odnaleźć zmiennej, do której odwołuje się atrybut ref
w elemencie <Quota>
.
Jeśli na przykład atrybut ref
ma wartość request.header.quotapolicy
w elemencie <Quota>
, ale jest niedostępny w procesie proxy interfejsu API, pojawi się powyższy błąd.
<Quota ref="request.header.quotapolicy">
Diagnostyka
Sprawdź każdą z zasad resetowania limitu w serwerze proxy interfejsu API, w której wystąpił błąd, i zidentyfikuj zasadę resetowania limitu, w której nazwa zmiennej referencyjnej określona w elemencie
<Quota>
nie może zostać poprawnie rozwiązana.Sprawdź, czy zmienna jest zdefiniowana i dostępna w przepływie, w którym działa zasada resetowania limitu.
Jeśli zmienna to:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest wykonywana zasada) lub
- nie może zostać rozwiązana (nie jest zdefiniowana).
to jest przyczyna błędu.
W przykładzie poniżej nazwa zasady limitu docelowego powinna być pobierana z nagłówka żądania o nazwie quotapolicy. Edge nie może jednak rozwiązać parametru request.header.quotapolicy. Dzieje się tak, jeśli nagłówek quotapolicy nie jest przekazywany w żądaniu do interfejsu API.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota ref="request.header.quotapolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
Oto przykład żądania interfejsu API, które nie zawiera nagłówka quotapolicy:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Ponieważ nagłówek quotapolicy nie jest przekazywany w ramach żądania, odwołanie request.header.quotapolicy użyte w elemencie
<Quota>
w powyższym poleceniu resetowania zasad dotyczących limitu kwoty jest nieokreślone i nie można go rozwiązać. W rezultacie otrzymasz ten komunikat o błędzie:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Rozdzielczość
Sprawdź, czy atrybut ref
, do którego odwołuje się element <Quota>
, jest rozpoznawany w środowisku wykonawczym i jest dostępny w konkretnym procesie, w którym działa zasada resetowania limitu.
Aby poprawić powyższy przykład, możesz zmodyfikować żądanie, aby zawierało nagłówek quotapolicy, jak pokazano poniżej:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"