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 Reset Quota nie jest zdefiniowana w proxy interfejsu API. Element <Quota> jest obowiązkowy i określa docelową zasadę dotyczącą limitu, której licznik powinien zostać zaktualizowany za pomocą zasady Reset Quota. Ta docelowa zasada dotycząca limitu musi być utworzona i zdefiniowana w tym samym proxy interfejsu API i musi być dostępna podczas przepływu.
Załóżmy na przykład, że element<Quota> jest zdefiniowany w sposób widoczny poniżej, ale jeśli elementMyQuotaPolicy nie jest zdefiniowany w serwerze proxy interfejsu API, pojawi się powyższy błąd.
<Quota name="MyQuotaPolicy">
Diagnostyka
Określ nieprawidłową nazwę zasady dotyczącej limitu, która została podana w zasadzie Reset Quota. Nazwę zasady dotyczącej limitów znajdziesz w ciągu błędu. Na przykład w tym ciągu błędu nazwa zasady Quota to
MyQuotaPolicy:"faultstring": "Invalid rate limit policy MyQuotaPolicy"Sprawdź wszystkie zasady Reset Quota w serwerze proxy interfejsu API, w którym wystąpił błąd. Znajdź konkretną zasadę Reset Quota, w której zasada Quota określona w elemencie obowiązkowym
<Quota>odpowiada nazwie zidentyfikowanej w kroku 1 powyżej.Na przykład poniższe zasady Reset Quota określają zasady Quota o nazwie
MyQuotaPolicy, która pasuje do ciągu faultstring:<?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 zasada dotycząca limitu została utworzona i zdefiniowana w tym samym serwerze proxy interfejsu API. Jeśli zasada Quota nie istnieje w tym samym serwerze proxy interfejsu API, to jest to przyczyną błędu.
W przykładzie powyżej zasady dotyczące limitu
MyQuotaPolicypowinny występować w przepływie przed wykonaniem zasad resetowania limituReset_Quota_Demo.Ponieważ zasada dotycząca limitu
MyQuotaPolicynie występuje w przepływie, otrzymasz kod błędu:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Rozdzielczość
Sprawdź, czy zasady dotyczące limitu zadeklarowane w elemencie <Quota> są zdefiniowane w serwerze proxy interfejsu API. Ta zasada dotycząca limitu docelowego musi być dostępna podczas wykonywania zasady Reset Quota.
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 do klienta będzie po prostu brzmiał: 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ć przekształcone w wartość. Ten element jest wymagany i określa kwotę, o którą należy zmniejszyć licznik limitu.
Diagnostyka
Określ zasadę Reset Quota, w której wystąpił błąd, oraz nazwę zmiennej odniesienia, której nie można rozpoznać. Oba te elementy znajdziesz w odpowiedzi z błędem.
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:demoW pliku XML nieudanej zasady Reset Quota sprawdź, czy nazwa użytej zmiennej odwołania jest zgodna z nazwą odwołania podaną w odpowiedzi na błąd (krok 1 powyżej).
Na przykład te zasady ustawiają element z odwołaniem o nazwie
request.header.allowcount, która pasuje do nazwy 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 odniesienia jest zdefiniowana i dostępna w przepływie, w którym wykonywana jest zasada Reset Quota.
Jeśli zmienna ma wartość:
- poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady) lub
- nie można rozstrzygnąć (nie jest zdefiniowana)
wtedy to jest przyczyną błędu.
W przykładzie powyżej wartość dozwolonej liczby w elemencie
<Allow>powinna być pobierana z nagłówka żądania o nazwie allowcount. Jednak Edge nie może rozpoznać request.header.allowcount. Dzieje się tak, jeśli nagłówek allowcount nie jest przekazywany w ramach żądania do interfejsu API.Oto przykładowe żądanie do interfejsu API, które nie przekazuje nagłówka allowcount w ramach żądania:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"Ponieważ nagłówek allowcount nie jest przekazywany w ramach żądania, zmienna request.header.allowcount używana w elemencie
<Allow>w powyższych zasadach ResetQuota jest niezdefiniowana i dlatego nie można jej rozpoznać. Otrzymasz więc 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
Rozdzielczość
Sprawdź, czy zmienna, do której odwołuje się element <Allow>, istnieje lub jest zdefiniowana i dostępna w konkretnym procesie, w którym wykonywane są zasady Reset Quota.
Aby poprawić przykład pokazany powyżej, 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 rozpoznać 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 przepływie proxy interfejsu API, pojawi się powyższy błąd.
<Quota ref="request.header.quotapolicy">
Diagnostyka
Sprawdź każdą zasadę Reset Quota w serwerze proxy interfejsu API, w którym wystąpił błąd, i zidentyfikuj zasadę Reset Quota, w której nazwa zmiennej odniesienia określonej w elemencie
<Quota>nie może zostać prawidłowo rozpoznana.Sprawdź, czy zmienna jest zdefiniowana i dostępna w przepływie, w którym wykonywana jest zasada Reset Quota.
Jeśli zmienna ma wartość:
- poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady) lub
- nie można rozstrzygnąć (nie jest zdefiniowana)
wtedy to jest przyczyną błędu.
W przykładzie poniżej nazwa docelowej zasady limitu powinna zostać pobrana z nagłówka żądania o nazwie quotapolicy. Jednak Edge nie może rozpoznać request.header.quotapolicy. Dzieje się tak, gdy nagłówek quotapolicy nie jest przekazywany w ramach żądania 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 nagłówka quotapolicy jako części żądania:
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ższych zasadach Reset Quota jest niezdefiniowane i nie można go rozpoznać. W rezultacie otrzymasz odpowiedź z błędem:"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 przepływie, w którym wykonywana jest zasada Reset Quota.
Aby poprawić przykład pokazany powyżej, możesz zmodyfikować żądanie, dodając 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"