Wyświetlasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
InvalidMessageWeight
Kod błędu
policies.ratelimit.InvalidMessageWeight
Treść odpowiedzi na błąd
{ "fault": {jdoe "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ść określona dla elementu <MessageWeight> przez
zmienna przepływu jest nieprawidłowa (wartość nie jest liczbą całkowitą).
Jeśli na przykład wartość zmiennej przepływu określonej dla parametru <MessageWeight>
to 1,5 (wartość nie jest całkowita), występuje błąd.
Diagnostyka
Znajdź nieprawidłową wartość używaną w elemencie
<MessageWeight>w zwiększeniu Zasady aresztowania. Te informacje znajdziesz w elemenciefaultstringw odpowiedź na żądanie błędu. Na przykład w tym błędzie: nieprawidłowa wartość użyta jako Element<MessageWeight>jest1.5:"faultstring": "Invalid message weight value 1.5"Sprawdź wszystkie zasady Spike Arrest na konkretnym serwerze proxy API, gdzie wartość wystąpił błąd. Może istnieć co najmniej 1 zasada Spike Arrest, w której podano element
<MessageWeight>.Na przykład ta zasada określa wartość
<MessageWeight>za pomocą zmiennej przepływu o nazwiemessage_weight:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate>100ps</Rate> <MessageWeight ref="message_weight"/> </SpikeArrest>Ustal wartość zmiennej używanej w elemencie
<MessageWeight>funkcji określonych zasad dotyczących aresztowania gwałtownego wzrostu. Wartość zmiennej przepływu może być wyodrębniona z nagłówków HTTP, parametrów zapytania, ładunku żądania XML lub JSON albo zdefiniowana w innej zasadzie.- Znajdź kod w obrębie serwera proxy interfejsu API, w którym najpierw zdefiniowano zmienną.
- Gdy już ustalisz, w której zasadzie zmienna jest zdefiniowana i uzupełniana jako pierwsza, sprawdź, jak jest ustawiana jej wartość.
- Jeśli wartość zmiennej przepływu jest zgodna z wartością określoną w kroku 1 powyżej, to jest przyczyną błędu.
Załóżmy na przykład, że przed regułą Spike Arrest używana jest zasada JavaScript Zasada ustawiania zmiennej
message_weightna podstawie metody żądania jako poniżej: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_weightto1.5, która jest nieprawidłowa (nie całkowita) wartość.
Rozdzielczość
Sprawdź, czy wartość elementu MessageWeight jest prawidłową wartością (całkowitą)
).
Aby poprawić przykład powyżej, możesz zmienić wartość zmiennej
message_weight w JavaScripcie, aby być liczbą całkowitą:
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveSpikeArrestRate
Kod błędu
policies.ratelimit.FailedToResolveSpikeArrestRate
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference [reference] in SpikeArrest policy [api_policy]", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate"
}
}
}Przyczyna
Ten błąd występuje, jeśli odniesienia do zmiennej zawierającej ustawienie stawki w elemencie <Rate> nie można przekształcić w wartość w zasadach Spike Arrest. Ten element jest obowiązkowy i służy do określenia współczynnika zatrzymania szczytowego w postaci {int}pm lub {int}ps. Na przykład {int}pm może mieć wartość 500pm,
czyli 500 wywołań na minutę. Podobnie wartość 10ps oznacza 10 wywołań na
sekunda.
Diagnostyka
Wskaż zasadę, w której wystąpił błąd, oraz podaj nazwę tej zasady którego nie można poprawnie rozwiązać. Oba te produkty znajdziesz w elemencie faultstring odpowiedzi na błąd.
Na przykład w tym ciągu błędów nazwa zasady to
SpikeArrest_AuthProxy, a plik referencyjny torequest.header.rate:"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy"W pliku XML zasad Spike Arrest, które nie działają, sprawdź, czy nazwa odwołania jest zgodna z nazwą odwołania wskazaną w ciągu błędu (krok 1 powyżej). **.
Na przykład ta zasada ustawia element
z odwołaniem o nazwie request.header.rate, która odpowiada temu, co jest w ciągu znaków błędu:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate ref="request.header.rate"/> </SpikeArrest>Określ, czy zmienna jest zdefiniowana i dostępna w procesie, w którym Trwa wykonywanie zasad dotyczących zatrzymania gwałtownego wzrostu.
Jeśli zmienna jest:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest tworzona zasada) wykonano) lub
- nie można rozwiązać (nie jest zdefiniowany)
to właśnie jest przyczyną błędu.
W przykładzie powyżej wartość gwałtownego wzrostu liczby aresztowań w kraju
<Rate>element powinien być pobierany z nagłówka żądania o nazwie rate. Edge nie może jednak przetworzyć żądania request.header.rate. Dzieje się tak jeśli stawka nagłówka nie jest przekazywana w żądaniu do interfejsu API.Oto przykładowe żądanie do interfejsu API, które nie przekazuje rate nagłówka w ramach żądanie:
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json"Ponieważ stawka nagłówka nie jest przekazywana w żądaniu, odwołanie Parametr request.header.rate używany w elemencie
<Rate>powyższego wzrostu Zasada aresztowania jest niezdefiniowana, dlatego nie można rozwiązać tego problemu. W związku z tym otrzymasz kod błędu:policies.ratelimit.FailedToResolveSpikeArrestRate
Rozdzielczość
Sprawdź, czy zmienna, do której odwołuje się element <Rate>, istnieje lub jest zdefiniowana
i dostępne w ramach konkretnego procesu, w którym realizowana jest zasada „gwałtownego zatrzymania”.
Aby poprawić przykład powyżej, możesz zmodyfikować żądanie, tak aby zawierało nagłówek rate, jak pokazano poniżej:
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json" -H "rate:30ps"