Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
InvalidRegularExpression
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Deploying Revision revision_number to environment RegularExpressionProtection policy_name: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.
Przykładowy komunikat o błędzie
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
Przykładowy zrzut ekranu z błędem
Przyczyna
Jeśli wyrażenie regularne w elemencie <Pattern>
w zasadzie RegularExpressionProtection jest nieprawidłowe, wdrożenie interfejsu Proxy API się nie powiedzie.
Diagnostyka
W komunikacie o błędzie znajdź nazwę zasad ochrony wyrażenia regularnego. Na przykład w tym błędzie nazwa zasad ochrony wyrażenia regularnego to
Regular-Expression-Protection-1:
.Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
Sprawdź wszystkie elementy
<Pattern>
w pliku XML zasad ochrony za pomocą wyrażeń regularnych, które nie działają prawidłowo. Sprawdź, czy któryś z elementów<Pattern>
zawiera nieprawidłowe wyrażenie regularne. Jeśli którykolwiek z elementów<Pattern>
zawiera nieprawidłowe wyrażenie regularne, jest to przyczyną błędu.Na przykład ta zasada określa wartość
Pattern>
argumentufoo){2}
, co jest uważane za nieprawidłowe wyrażenie regularne:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <URIPath> <Pattern>foo){2}</Pattern> </URIPath> <Source>request</Source> </RegularExpressionProtection>
W powyższym przykładzie wyrażenie regularne określone w elementach
<Pattern>
nie zawiera otwierającego nawiasu. Dlatego jest ono uznawane za nieprawidłowe wyrażenie regularne. Wdrożenie interfejsu API Proxy kończy się niepowodzeniem.
Rozdzielczość
Upewnij się, że każdy element <Pattern>
w polityce RegularExpressionProtection zawiera prawidłowe wyrażenie regularne. Aby debugować wyrażenia regularne, możesz wyszukać różne narzędzia do obsługi wyrażeń regularnych online lub offline.
Aby poprawić przykład zasad ochrony za pomocą wyrażeń regularnych pokazanych powyżej, dodaj brakujące nawiasy:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <URIPath> <Pattern>(foo){2}</Pattern> </URIPath> <Source>request</Source> </RegularExpressionProtection>
XPathCompilationFailed
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Deploying Revision revision_number to environment RegularExpressionProtection policy_name: Failed to compile xpath xpath_expression. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.
Przykładowy komunikat o błędzie
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile xpath /notapigee:foo/notapigee:bar. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
Przykładowy zrzut ekranu z błędem
Przyczyna
Jeśli prefiks lub wartość używana w elemencie <XPath>
nie należy do żadnej z zadeklarowanych przestrzeni nazw w zasadzie RegularExpressionProtection, wdrożenie serwera proxy interfejsu API się nie uda.
Więcej informacji o przestrzeniach nazw, XPath i prefiksach znajdziesz w artykule Przestrzenie nazw XML i ich wpływ na XPath i XSLT.
Diagnostyka
Określ nazwę zasady RegularExpressionProtection, w której wystąpił błąd, oraz użyte wyrażenie XPath. Oba te elementy znajdziesz w komunikacie o błędzie.
Na przykład w poniższym błędzie nazwa zasady to
Regular-Expression-Protection-1
, a wyrażenie XPath to/notapigee:foo/notapigee:bar:
.Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile xpath /notapigee:foo/notapigee:bar. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
W kodzie XML reguły ochrony za pomocą wyrażeń regularnych, która nie działa prawidłowo, sprawdź, czy ścieżka XPath ustawiona w elemencie
Expression
jest zgodna ze ścieżką XPath wskazaną w komunikacie o błędzie (krok 1 powyżej).Na przykład ta zasada określa ścieżkę XPath jako
/notapigee:foo/notapigee:bar
, która jest zgodna z treścią komunikatu o błędzie:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/notapigee:foo/notapigee:bar</Expression> <Type>nodeset</Type> <Pattern>pattern</Pattern> <Pattern>pattern2</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
- Sprawdź elementy
<Namespaces>
i<Expression>
w zasadzie RegularExpressionProtection. Jeśli<Expression>
wskazany w komunikacie o błędzie używa prefiksu lub wartości, która nie należy do przestrzeni nazw zadeklarowanych w zasadzie ochrony za pomocą wyrażenia regularnego, jest to przyczyna błędu.Zwróć uwagę, że w przykładzie zasady
<XPath>
używającej ochrony wyrażenia regularnego prefiksnotapigee
:<Expression>/notapigee:foo/notapigee:bar</Expression>
Jednak prefiks
notapigee
nie jest zdefiniowany w żadnym z elementów<Namespace>
, dlatego kompilacja<XPath>
nie powiedzie się i wdrożenie nie powiedzie się.
Rozdzielczość
Upewnij się, że wszystkie przestrzenie nazw używane w elementach <Expression>
pod elementami <XPath>
są zadeklarowane w zasadzie RegularExpressionProtection. Aby poprawić powyższy przykład, możesz zastąpić prefiks notapigee
prefiksem apigee
, który jest zadeklarowany w przestrzeniach nazw:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:foo/apigee:bar</Expression> <Type>nodeset</Type> <Pattern>pattern</Pattern> <Pattern>pattern2</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
CannotBeConvertedToNodeset
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Deploying Revision revision_number to environment RegularExpressionProtection policy_name: Result of xpath xpath_expression cannot be converted to nodeset. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.
Przykładowy komunikat o błędzie
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Result of xpath count(//apigee:foo) cannot be converted to nodeset. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
Przykładowy zrzut ekranu z błędem
Przyczyna
Jeśli zasada wyrażenia regularnego zawiera wyrażenie <XPath>
, w którym element <Type>
jest zdefiniowany jako nodeset, ale nie można go przekonwertować na nodeset, wdrażanie proxy interfejsu API kończy się niepowodzeniem.
Diagnostyka
Określ zasady RegularExpressionProtection, w których wystąpił błąd, oraz wyrażenie XPath, którego nie można przekonwertować na zestaw węzłów. Oba te elementy znajdziesz w komunikacie o błędzie.
Na przykład w poniższym błędzie nazwa zasady to
Regular-Expression-Protection-1
, a wyrażenie XPath tocount(//apigee:foo):
.Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Result of xpath count(//apigee:foo) cannot be converted to nodeset. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
W kodzie XML reguły ochrony za pomocą wyrażeń regularnych, która nie działa, sprawdź, czy ścieżka XPath ustawiona w elemencie
<Expression>
elementu<XPath>
jest zgodna ze ścieżką XPath wskazaną w komunikacie o błędzie (krok 1 powyżej).Na przykład w tej regule podany jest parametr
count(//apigee:foo)
, który odpowiada wartości podanej w komunikacie o błędzie:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>count(//apigee:foo)</Expression> <Type>nodeset</Type> <Pattern>pattern</Pattern> <Pattern>pattern2</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
Sprawdź wartość ustawioną w elemencie
<Type>
pod elementem<XPath>
. Jeśli element<Type>
ma wartośćnodeset
, jest to przyczyna błędu.W tym przykładzie wyrażenie XPath to count(), które nie zwraca co najmniej 1 węzła. Wdrożenie interfejsu API Proxy się nie powiedzie.
Rozdzielczość
Jeśli element <Type>
ma wartość nodeset, sprawdź, czy wyniki elementu <Expression>
w elementach <XPath>
to co najmniej 1 węzeł. Możesz też zmienić element <Type>
na bardziej odpowiednią wartość w zależności od przypadku użycia.
Aby poprawić powyższy przykład, możesz zmienić element <Expression>
na inną wartość, która może zwracać węzły:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:foo/apigee:bar</Expression> <Type>nodeset</Type> <Pattern>pattern</Pattern> <Pattern>pattern2</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
JSONPathCompilationFailed
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Deploying Revision revision_number to environment RegularExpressionProtection policy_name: Failed to compile jsonpath jsonpath_expression Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.
Przykładowy komunikat o błędzie
Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile jsonpath $.store.book[*.author. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
Przykładowy zrzut ekranu z błędem
Przyczyna
Jeśli element <Expression>
w elemencie <JSONPath>
zasady ochrony wyrażeń regularnych jest ustawiony na nieprawidłowe wyrażenie JSONPath, wdrożenie serwera proxy interfejsu API się nie uda.
Diagnostyka
Określ nazwę polityki RegularExpressionProtection, w której wystąpił błąd i użyto nieprawidłowego wyrażenia JSONPath. Oba te elementy znajdziesz w komunikacie o błędzie.
Na przykład w poniższym błędzie nazwa zasady to
Regular-Expression-Protection-1
, a wyrażenie JSONPath to$.store.book[*.author:
.Error Deploying Revision 1 to test RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile jsonpath $.store.book[*.author. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
W pliku XML reguły ochrony za pomocą wyrażeń regularnych, która nie działa prawidłowo, sprawdź, czy ścieżka JSONPath ustawiona w elemencie
Expression
jest zgodna ze ścieżką JSONPath wskazaną w komunikacie o błędzie (krok 1 powyżej).Na przykład w tej polityce element
Expression
pod elementem<JSONPath>
jest określony jako$.store.book[*.author
, co odpowiada temu, co jest podane w komunikacie o błędzie:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression>$.store.book[*.author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
W zasadach sprawdź element
<Expression>
w elemencie<JSONPath>
. Jeśli nie pasuje do składni JSONPath, jest to przyczyna błędu. W powyższym przykładzie brakuje zamykającej nawiasu kwadratowego, przez co wyrażenie jest nieprawidłowe.Wyrażenie ścieżki JSON jest nieprawidłowe, więc wdrożenie interfejsu API Proxy kończy się niepowodzeniem.
Rozdzielczość
Upewnij się, że wartość elementu <Expression>
w elemencie <JSONPath>
w zasadzie ochrony za pomocą wyrażeń regularnych jest prawidłowym wyrażeniem JSONPath.
Aby poprawić powyższy przykład, możesz dodać brakujące nawiasy kwadratowe do wartości elementu <Expression>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
NothingToEnforce
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Saving Revision revision_number RegularExpressionProtection policy_name: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Przykładowy komunikat o błędzie
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Przykładowy zrzut ekranu z błędem
Przyczyna
Jeśli reguła ochrony wyrażenia regularnego nie zawiera żadnego z elementów <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
ani <JSONPayload>
, wdrożenie interfejsu API Proxy kończy się niepowodzeniem.
Jak wskazano w komunikacie o błędzie, zasada RegularExpressionProtection musi zawierać co najmniej 1 z tych elementów: <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
lub <JSONPayload>
.
Diagnostyka
Określ nazwę zasady RegularExpressionProtection, w której wystąpił błąd. Znajdziesz go w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to
Regular-Expression-Protection-1:
RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Sprawdź niezrealizowane zasady ochrony wyrażeń regularnych (określone w kroku 1 powyżej). Jeśli zasada nie zawiera nawet jednego z tych elementów:
<URIPath>
,<QueryParam>
,<Header>
,<FormParam>
,<XMLPayload>
lub<JSONPayload>
, to jest przyczyną błędu.Na przykład ta zasada ochrony za pomocą wyrażeń regularnych nie zawiera żadnego z wymienionych wyżej elementów:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> </RegularExpressionProtection>
Ponieważ w zasadzie wyodrębniania zmiennych nie ma żadnych elementów obowiązkowych, wdrożenie serwera proxy interfejsu API się nie powiedzie.
Rozdzielczość
Upewnij się, że zasada RegularExpressionProtection zawiera co najmniej jeden z tych obowiązkowych elementów: <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
lub <JSONPayload>
. Na przykład:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
NoPatternsToEnforce
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Saving Revision revision_number RegularExpressionProtection policy_name: No patterns to enforce in payload_name.
Przykładowy komunikat o błędzie
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
Przykładowy zrzut ekranu z błędem
Przyczyna
Jeśli którykolwiek z elementów najwyższego poziomu (<URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
lub <JSONPayload>
) nie ma elementu <Pattern>
zdefiniowanego w polityce ochrony przed wyrażeniami regularnymi, wdrożenie serwera proxy API zakończy się niepowodzeniem.
Diagnostyka
Określ nazwę zasady RegularExpressionProtection, w której wystąpił błąd, oraz element podrzędny, który nie zawiera elementu
<Pattern>
. Oba te elementy znajdziesz w komunikacie o błędzie.Na przykład w tym błędzie nazwa reguły to
Regular-Expression-Protection-1
, a element podrzędny toXPath:
.RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
- Sprawdź zasadę ochrony za pomocą wyrażeń regularnych, która nie działa prawidłowo, i ustanów, czy element podrzędny zidentyfikowany w kroku 1 nie zawiera elementu
<Pattern>
. Jeśli element<Pattern>
nie istnieje, jest to przyczyna błędu.Na przykład ta zasada nie zawiera elementu
<Pattern>
wewnątrz<XPath>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> </XPath> </XMLPayload> </RegularExpressionProtection>
Ponieważ element
<XPath>
nie zawiera elementu<Pattern>
, wdrażanie interfejsu API Proxy się nie powiedzie.
Rozdzielczość
Upewnij się, że każdy z elementów <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
lub <JSONPayload>
ma zdefiniowany co najmniej jeden element <Pattern>
. Informacje o prawidłowym określaniu tego elementu znajdziesz w zasadach dotyczących ochrony za pomocą wyrażeń regularnych.
Aby naprawić powyższy przykład, wystarczy dodać element <Pattern>
do elementu <XPath>
pod elementem <XMLPayload>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
NONEmptyPrefixMappedToEmptyURI
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Non-empty prefix prefix_name cannot be mapped to empty uri.
Przykładowy komunikat o błędzie
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
Przykładowy zrzut ekranu z błędem
Przyczyna
Ten błąd występuje, jeśli zasada RegularExpressionProtection ma prefiks zdefiniowany w elemencie <Namespace>
pod elementem <XMLPayload>
, ale nie ma zdefiniowanego URI.
Diagnostyka
Określ zasady ochrony za pomocą wyrażenia regularnego, w których wystąpił błąd, oraz nazwę prefiksu, który nie jest mapowany na identyfikator URI. Oba te elementy znajdziesz w komunikacie o błędzie.
Na przykład w tym błędzie nazwa reguły to Ochrona za pomocą wyrażenia regularnego-1, a prefiks to apige:
RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
W kodzie XML zasady ochrony za pomocą wyrażeń regularnych, która nie działa, sprawdź, czy nazwa prefiksu ustawiona w elemencie
<Namespace>
pod elementem<XMLPayload>
jest zgodna z nazwą prefiksu wskazaną w komunikacie o błędzie (krok 1 powyżej).Na przykład w zasadach podano w elemencie
<Namespace>
prefiks o nazwie apige, który jest zgodny z danymi w komunikacie o błędzie:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee"/> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
Sprawdź, czy element
<Namespace>
z określonym w kroku 2 prefiksem ma prawidłowy identyfikator URI. Jeśli identyfikator URI jest nieprawidłowy, to właśnie on jest przyczyną błędu.W powyższym przykładzie reguły ochrony za pomocą wyrażeń regularnych widać, że nie ma identyfikatora URI odpowiadającego elementowi
<Namespace>
z prefiksem apigee. W związku z tym pojawia się błąd:Non-empty prefix apigee cannot be mapped to empty uri.
Rozdzielczość
Upewnij się, że wszystkie elementy <Namespace>
zdefiniowane za pomocą prefiksu mają odpowiedni identyfikator URI w zasadach dotyczących wyodrębniania zmiennych. Na przykład:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
DuplicatePrefix
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Duplicate prefix prefix_name.
Przykładowy komunikat o błędzie
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
Przykładowy zrzut ekranu z błędem
Przyczyna
Ten błąd występuje, jeśli zasada RegularExpressionProtection ma ten sam prefiks zdefiniowany więcej niż raz w elemencie <Namespace>
pod elementem <XMLPayload>
.
Ten błąd występuje, ponieważ prefiks apigee jest zdefiniowany dwukrotnie, jak pokazano poniżej:
<Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace>
Diagnostyka
Zidentyfikuj zasadę RegularExpressionProtection, w której wystąpił błąd, oraz nazwę prefiksu. Oba te elementy znajdziesz w komunikacie o błędzie.
Na przykład w tym błędzie nazwa reguły to Ochrona za pomocą wyrażenia regularnego-1, a prefiks to apige:
RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
W kodzie XML zasady ochrony za pomocą wyrażeń regularnych, która nie działa, sprawdź, czy nazwa prefiksu ustawiona w elemencie
<Namespace>
pod elementem<XMLPayload>
jest zgodna z nazwą prefiksu wskazaną w komunikacie o błędzie (krok 1 powyżej).Na przykład w zasadach podano w elemencie
<Namespace>
prefiks o nazwie apige, który jest zgodny z danymi w komunikacie o błędzie:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
Sprawdź, czy element
<Namespace>
z określonym prefiksem określonym w kroku 2 został zdefiniowany więcej niż raz. Jeśli jest zdefiniowany więcej niż raz, to jest przyczyną błędu.W powyższym przykładzie reguły ochrony za pomocą wyrażeń regularnych zwróć uwagę, że element
<Namespace>
z prefiksem apigee został zdefiniowany dwukrotnie. W związku z tym pojawia się błąd:Duplicate prefix apigee.
Rozdzielczość
Upewnij się, że dla każdego prefiksu w elementach <Namespace>
w zasadzie RegularExpressionProtection występuje tylko jedna definicja. Na przykład:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
EmptyXPathExpression
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Empty XPath expression.
Przykładowy komunikat o błędzie
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
Przykładowy zrzut ekranu z błędem
Przyczyna
Jeśli element <Expression>
w elemencie <XPath>
w zasadzie RegularExpressionProtection nie zawiera elementu <Expression>
, wdrożenie serwera proxy interfejsu API się nie powiedzie.
Diagnostyka
Z komunikatu o błędzie określ, która reguła ochrony za pomocą wyrażeń regularnych nie działa. Na przykład w tym błędzie nazwa reguły to Regular-Expression-Protection-1:
RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
W pliku XML reguły Zabezpieczenia za pomocą wyrażenia regularnego, która nie działa prawidłowo, sprawdź, czy zawiera on element
<XMLPayload>
z elementem podrzędnym<XPath>
, który nie ma zdefiniowanego elementu<Expression>
, lub czy element<Expression>
nie ma przypisanej żadnej wartości. Jeśli tak, to to jest przyczyną błędu.Oto na przykład zasada ochrony wyrażeń regularnych, która zawiera element
<XMLPayload>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression></Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
Ponieważ wewnątrz elementu
<XPath>
znajduje się pusty element<Expression>
, wdrażanie interfejsu Proxy API kończy się niepowodzeniem.
Rozdzielczość
Upewnij się, że zasada RegularExpressionProtection ma niepusty i prawidłowy element <Expression>
zdefiniowany w elemencie <XPath>
. Na przykład:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
EmptyJSONPathExpression
Komunikat o błędzie
Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Empty JSONPath expression.
Przykładowy komunikat o błędzie
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
Przykładowy zrzut ekranu z błędem
Przyczyna
Jeśli w elemencie <JSONPath>
w ramach zasad ochrony wyrażenia regularnego nie ma elementu <Expression>
, wdrożenie serwera proxy interfejsu API się nie powiedzie.
Diagnostyka
Z komunikatu o błędzie określ, która reguła ochrony za pomocą wyrażeń regularnych nie działa. Na przykład w tym błędzie nazwa reguły to Regular-Expression-Protection-1:
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
Sprawdź, czy plik XML zasady ochrony wyrażeń regularnych zawiera nieprawidłowy element
<JSONPayload>
z elementem podrzędnym<JSONPath>
, który nie ma zdefiniowanego elementu<Expression>
, lub czy element<Expression>
nie ma żadnej wartości. Jeśli tak, to to jest przyczyną błędu.Oto przykład reguły ochrony za pomocą wyrażeń regularnych, która zawiera element
<JSONPayload>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression></Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
Element
<JSONPath>
zawiera pusty element<Expression>
, dlatego nie udało się wdrożyć serwera proxy interfejsu API.
Rozdzielczość
Upewnij się, że zasada RegularExpressionProtection ma niepusty i prawidłowy element <Expression>
zdefiniowany w elemencie <JSONPath>
. Na przykład:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection-1</DisplayName> <Properties/> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Source>request</Source> <JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>