Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
InvalidRLPolicy
Kod błędu
policies.resetquota.InvalidRLPolicy
Treść odpowiedzi o błędzie
{ "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 limitu określona w elemencie <Quota>
zasady resetowania limitu nie jest zdefiniowana na serwerze proxy interfejsu API. Element <Quota>
jest obowiązkowy i wskazuje zasadę dotyczącą docelowego limitu, której licznik należy zaktualizować za pomocą zasady resetowania limitu. Tę zasadę dotyczącą limitów docelowych należy utworzyć i zdefiniować na tym samym serwerze proxy interfejsu API i musi być dostępna w trakcie procesu.
Załóżmy np., że element <Quota>
jest zdefiniowany w sposób pokazany poniżej, ale jeśli element MyQuotaPolicy
nie jest zdefiniowany w serwerze proxy interfejsu API, wystąpi powyższy błąd.
<Quota name="MyQuotaPolicy">
Diagnostyka
Wskaż nieprawidłową nazwę zasady dotyczącej limitów określoną w zasadzie resetowania limitu. Nazwa zasady dotyczącej limitów znajdziesz w ciągu błędów. Na przykład w tym ciągu błędów nazwa zasady dotyczącej limitów to
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
Sprawdź wszystkie zasady resetowania limitów na serwerze proxy interfejsu API, w których wystąpił błąd. Wskaż konkretną zasadę resetowania limitu, w przypadku której zasada limitu określona w obowiązkowym elemencie
<Quota>
jest zgodna z nazwą określoną w kroku 1 powyżej.Na przykład ta zasada resetowania limitu określa zasadę limitu o nazwie
MyQuotaPolicy
zgodną z treścią w ciągu znaków błędów:<?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 limitów została utworzona i zdefiniowana w tym samym serwerze proxy interfejsu API. Jeśli zasada dotycząca limitów nie istnieje w tym samym serwerze proxy interfejsu API, to jest przyczyną błędu.
W powyższym przykładzie zasada dotycząca limitów
MyQuotaPolicy
powinna istnieć w procesie przed uruchomieniem zasady resetowania limituReset_Quota_Demo
.W ramach tego procesu nie ma zasady dotyczącej limitów
MyQuotaPolicy
, więc otrzymasz kod błędu:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Rozdzielczość
Sprawdź, czy zasada limitu zadeklarowana w elemencie <Quota>
jest zdefiniowana na serwerze proxy interfejsu API. Ta zasada limitu docelowego musi być dostępna po wykonaniu zasady resetowania limitu.
FailedToResolveAllowCountRef
Kod błędu
policies.resetquota.FailedToResolveAllowCountRef
Treść odpowiedzi o błędzie
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
Klient otrzyma taki błąd: 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ć dopasowane do wartości. Ten element jest wymagany i określa kwotę, o którą ma zostać zmniejszony licznik limitu.
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 z komunikatem o błędzie.
Na przykład w tym 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, który nie zezwala na zresetowanie limitów, sprawdź, czy nazwa używanej zmiennej referencyjnej odpowiada nazwie referencyjnej w odpowiedzi o błędzie (krok 1 powyżej).
Na przykład ta zasada ustawia element z odwołaniem o nazwie
request.header.allowcount
, które odpowiada wywołaniu błędu:<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 procesie, w którym wykonywana jest zasada resetowania limitu.
Jeśli zmienna to:
- poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada) lub
- Nie można rozwiązać (nie określono)
to jest jego przyczyna.
W powyższym przykładzie wartość dozwolonej liczby w elemencie
<Allow>
powinna zostać pobrana z nagłówka żądania o nazwie allowcount. Edge nie może jednak przetworzyć żądania request.header.allowcount. Dzieje się tak, gdy w żądaniu do interfejsu API nie jest przekazywana wartość allowcount nagłówka.Oto przykładowe żądanie do interfejsu API, które nie przekazuje w żądaniu nagłówka allowcount:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Nagłówek allowcount nie jest przekazywany w ramach żądania, dlatego zmienna request.header.allowcount używana w elemencie
<Allow>
w powyższej zasadzie resetowania limitu jest niezdefiniowana, dlatego nie można jej rozwiązać. Otrzymasz wtedy odpowiedź 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
Rozdzielczość
Sprawdź, czy zmienna, do której odwołuje się element <Allow>
, istnieje lub jest zdefiniowana i dostępna w określonym procesie, w którym jest wykonywana zasada resetowania limitu.
Aby poprawić powyższy przykład, możesz zmodyfikować żądanie i uwzględnić w nim 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 o błędzie
{
"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 znaleźć zmiennej, do której odwołuje się atrybut ref
w elemencie <Quota>
.
Jeśli na przykład atrybut ref
jest ustawiony jako request.header.quotapolicy
w elemencie <Quota>
, ale nie jest dostępny w procesie serwera proxy interfejsu API, wystąpi błąd opisany powyżej.
<Quota ref="request.header.quotapolicy">
Diagnostyka
Sprawdź wszystkie zasady resetowania limitów na serwerze proxy interfejsu API, w których wystąpił błąd, i odszukaj zasadę resetowania limitu, w której nie można prawidłowo rozpoznać nazwy zmiennej referencyjnej określonej w elemencie
<Quota>
.Określ, czy zmienna jest zdefiniowana i dostępna w procesie, w którym wykonywana jest zasada resetowania limitu.
Jeśli zmienna to:
- poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada) lub
- Nie można rozwiązać (nie określono)
to jest jego przyczyna.
W przykładzie poniżej nazwa zasady dotyczącej limitów docelowych powinna zostać pobrana z nagłówka żądania o nazwie quotapolicy. Edge nie może jednak rozwiązać żądania request.header.quotapolicy. Dzieje się tak, gdy 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ładowe żądanie do interfejsu API, które nie przekazuje limitu nagłówka w żądaniu:
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, odniesienie request.header.quotapolicy używane w elemencie
<Quota>
w powyższej zasadzie resetowania limitu jest niezdefiniowane i nie można go rozwiązać. W rezultacie otrzymujesz odpowiedź o błędzie:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
Rozdzielczość
Sprawdź, czy atrybut ref
, do którego odwołuje się element <Quota>
, jest rozpoznawany w czasie działania i jest dostępny w konkretnym procesie, w którym jest wykonywana zasada resetowania limitu.
Aby poprawić powyższy przykład, możesz zmodyfikować żądanie i dodać do żądania 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"