Wyświetlasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
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 limitów określona w elemencie <Quota>
funkcji
Zasada resetowania limitu nie jest zdefiniowana na serwerze proxy interfejsu API. Element <Quota>
jest wymagany
i identyfikuje zasadę dotyczącą limitu docelowego, której licznik powinien być aktualizowany
zasady resetowania limitów. Tę zasadę dotyczącą limitów docelowych należy utworzyć i zdefiniować w
ten sam serwer proxy API i musi być dostępny podczas procesu.
Załóżmy na przykład, że element <Quota>
jest zdefiniowany poniżej, ale jeśli
MyQuotaPolicy
nie jest zdefiniowany na serwerze proxy API, występuje ten błąd.
<Quota name="MyQuotaPolicy">
Diagnostyka
Znajdź nieprawidłową nazwę zasady dotyczącej limitu określoną w zasadzie resetowania limitu. Nazwę zasady dotyczącej limitów znajdziesz w ciągu błędu. Na przykład w polu ten ciąg błędów, nazwa zasady limitów to
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
Sprawdź każdą zasadę resetowania limitu na serwerze proxy API, w którym wystąpił błąd miało miejsce. Wskaż konkretną zasadę resetowania limitu, w której znajduje się zasada dotycząca limitów określone w obowiązkowym elemencie
<Quota>
pasuje do nazwy zidentyfikowanej w kroku 1 powyżej.Na przykład ta zasada resetowania limitu określa zasadę limitu o nazwie
MyQuotaPolicy
, który jest zgodny z tekstem w ciągu znakó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>
Określ, czy ta zasada limitów została utworzona i zdefiniowana na tym samym serwerze proxy interfejsu API. Jeśli w tym samym interfejsie API nie ma limitu, to jest przyczyną błędu.
W przykładzie powyżej zasada dotycząca limitów
MyQuotaPolicy
powinna istnieją w przepływie przed wykonaniem zasadyReset_Quota_Demo
dotyczącą resetowania limitów.Ponieważ zasada limitów
MyQuotaPolicy
nie istnieje w tym przepływie, zostanie wyświetlony kod błędu:
"errorcode": "policies.resetquota.InvalidRLPolicy"
Rozdzielczość
Upewnij się, że zasada limitów zadeklarowana w elemencie <Quota>
jest zdefiniowana w parametrze
Proxy API. Ta zasada dotycząca limitu docelowego musi być dostępna, gdy zasada resetowania limitu
.
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: policies.ratelimit.QuotaViolation
.
Przyczyna
Ten błąd występuje, jeśli odwołanie do zmiennej zawierającej liczbę dozwolonych elementów w argumencie
elementu <Allow>
zasady nie można przekształcić w wartość. Ten
element jest wymagany i określa kwotę do zmniejszenia licznika 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 produkty znajdziesz w odpowiedzi na błąd.
Na przykład w tym poniższym ciągu znaków nazwa zasady to
ResetQuota
plik referencyjny 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 nieudanym pliku XML zasady resetowania limitu sprawdź, czy nazwa pliku referencyjnego używana zmienna odpowiada nazwie referencyjnej zidentyfikowanej w odpowiedzi na błąd (krok 1 powyżej).
Na przykład ta zasada ustawia element z odwołaniem o nazwie
request.header.allowcount
, która zawiera treść 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>
Określ, czy zmienna referencyjna jest zdefiniowana i dostępna w przepływie uruchamianą przez zasadę resetowania limitu.
Jeśli zmienna to:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym są realizowane zasady) lub
- nie można rozwiązać (nie jest zdefiniowany)
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. Pamiętaj jednak: Edge nie może znaleźć żądania request.header.allowcount. Dzieje się tak, gdy 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 wniosku:
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 resetowania zasad dotyczących limitu kwoty jest niezdefiniowana, więc nie można jej rozwiązać. Otrzymasz więc odpowiedź na błąd: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ępne w ramach konkretnego procesu, w którym jest wykonywana zasada resetowania limitu.
Aby poprawić ten przykład, możesz zmodyfikować żądanie, tak aby zawierało parametr 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 do zmiennej, do której odwołuje się atrybut ref
w tagu,
Nie można znaleźć elementu <Quota>
.
Jeśli na przykład atrybut ref
jest ustawiony jako request.header.quotapolicy
w
<Quota>
, ale jest niedostępny w procesie serwera proxy interfejsu API, otrzymasz
powyżej.
<Quota ref="request.header.quotapolicy">
Diagnostyka
Sprawdź każdą zasadę resetowania limitu na serwerze proxy API, w którym wystąpił błąd i wskazać zasadę resetowania limitu, gdzie nazwa pliku referencyjnego zmiennej określonej w elemencie
<Quota>
nie można poprawnie rozwiązać.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 konkretnym procesie, w którym jest realizowana zasada) lub
- nie można rozwiązać (nie jest zdefiniowany)
to jest jego przyczyną.
W przykładzie poniżej nazwa zasady limitu docelowego powinna wyglądać tak: pobrane z nagłówka żądania o nazwie quotapolicy. Edge nie może jednak aby rozwiązać problem z request.header.quotapolicy. Dzieje się tak, jeśli quotapolicy nagłówka nie jest przekazywana 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 do żądania:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
Nagłówek quotapolicy nie jest przekazywany jako część żądania, więc odwołanie request.header.quotapolicy użyty w elemencie
<Quota>
w powyższym poleceniu resetowania Zasada dotycząca limitów jest niezdefiniowana i nie można jej 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>
, ma wartość
środowiska wykonawczego i jest dostępne w ramach określonego procesu, w którym jest wykonywana zasada resetowania limitu.
Aby poprawić przykład powyżej, możesz zmodyfikować żądanie, tak aby zawierało nagłówek quotapolicy w następujący sposób:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"