Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Jeśli wyrażenie regularne w elemencie <Pattern>
zasady RegularExpressionProtection jest nieprawidłowe, wdrożenie serwera proxy interfejsu API nie powiedzie się.
Diagnostyka
Sprawdź nazwę zasady RegularExpressionProtection w komunikacie o błędzie. Na przykład w poniższym błędzie nazwa zasady RegularExpressionProtection 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 nieudanym kodzie XML zasad ochrony wyrażeń regularnych. Sprawdź, czy któryś z elementów<Pattern>
nie zawiera nieprawidłowego wyrażenia regularnego. Jeśli którykolwiek z elementów<Pattern>
ma nieprawidłowe wyrażenie regularne, to właśnie jest przyczyną błędu.Na przykład ta zasada określa wartość
Pattern>
elementufoo){2}
, który jest uważany 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 funkcji
<Pattern>
nie ma nawiasów otwierających. Dlatego jest ono uznawane za nieprawidłowe wyrażenie regularne. W związku z tym wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem.
Rozdzielczość
Upewnij się, że każdy element <Pattern>
w zasadzie RegularExpressionProtection zawiera prawidłowe wyrażenie regularne. Do debugowania wyrażeń regularnych możesz wyszukiwać różne narzędzia dostępne online i offline.
Aby poprawić przykładową zasadę ochrony wyrażeń regularnych widoczną 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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Jeśli prefiks lub wartość używana w elemencie <XPath>
nie należy do żadnej z przestrzeni nazw zadeklarowanych w zasadach RegularExpressionProtection, wdrożenie serwera proxy interfejsu API nie powiedzie się.
Więcej informacji o przestrzeniach nazw, XPath i prefiksach znajdziesz w dokumencie Przestrzenie nazw XML i jego wpływ na XPath i XPath.
Diagnostyka
Podaj 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 pliku XML zasad ochrony wyrażeń regularnych, które zakończyły się niepowodzeniem, sprawdź, czy ścieżka XPath ustawiona w elemencie
Expression
jest zgodna z wartością XPath podaną 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 określona w komunikacie o błędzie wartość<Expression>
określona w komunikacie o błędzie zawiera prefiks lub wartość, która nie należy do przestrzeni nazw zadeklarowanych w zasadzie RegularExpressionProtection, to jest to przyczyna błędu.Zauważ, że określona zasada
<XPath>
używa prefiksunotapigee
w przykładowej zasadzie RegularExpressionProtection:<Expression>/notapigee:foo/notapigee:bar</Expression>
Jednak prefiks
notapigee
nie jest zdefiniowany w żadnym z elementów<Namespace>
, dlatego kompilacja obiektu<XPath>
kończy się niepowodzeniem wdrożenia.
Rozdzielczość
Sprawdź, czy wszystkie przestrzenie nazw, które są używane w elementach <Expression>
w elementach <XPath>
, są zadeklarowane w zasadzie RegularExpressionProtection. Aby naprawić powyższy przykład, możesz zastąpić prefiks notapigee
ciągiem apigee
, który jest zadeklarowany w przestrzeni 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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Jeśli zasada wyrażeń regularnych zawiera wyrażenie <XPath>
, w którym element <Type>
jest zdefiniowany jako zbiór węzłów, ale tego wyrażenia nie można przekonwertować na zbiór węzłów, wdrożenie serwera proxy interfejsu API się nie uda.
Diagnostyka
Określ zasadę RegularExpressionProtection, w której wystąpił błąd, oraz wyrażenie XPath, którego nie można przekonwertować na zbiór 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 pliku XML zasad ochrony wyrażeń regularnych, których nie udało się przetworzyć, sprawdź, czy ścieżka XPath ustawiona w elemencie
<Expression>
elementu<XPath>
jest zgodna z wartością XPath podaną w komunikacie o błędzie (krok 1 powyżej).Na przykład ta zasada określa wartość
count(//apigee:foo)
, 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>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>
tonodeset
, to jest przyczyną błędu.W tym przykładzie wyrażenie XPath to count(), które nie zwraca co najmniej jednego węzła. Z tego powodu wdrożenie proxy interfejsu API się nie uda.
Rozdzielczość
Jeśli element <Type>
jest ustawiony na zbiór węzłów, upewnij się, że wynik elementu <Expression>
ustawionego w <XPath>
jest co najmniej 1 węzłem. Możesz też zmienić element <Type>
na bardziej odpowiednią wartość na podstawie swojego przypadku użycia.
Aby naprawić powyższy przykład, zmień 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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym 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 nie powiedzie się.
Diagnostyka
Znajdź nazwę zasady 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 tym 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 zasad ochrony wyrażeń regularnych, które zakończyły się niepowodzeniem, sprawdź, czy wartość JSONPath ustawiona w elemencie
Expression
jest zgodna z wartością JSONPath określoną w komunikacie o błędzie (krok 1 powyżej).Na przykład ta zasada określa element
Expression
w elemencie<JSONPath>
jako$.store.book[*.author
, który jest zgodny 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> <JSONPayload> <JSONPath> <Expression>$.store.book[*.author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
Sprawdź element
<Expression>
w elemencie<JSONPath>
w zasadzie. Jeśli nie jest ona zgodna ze składnią JSONPath, to jest przyczyna błędu. W przykładzie powyżej brakuje zamykającego nawiasu kwadratowego, co sprawia, że wyrażenie jest nieprawidłowe.Wyrażenie ścieżki JSON jest nieprawidłowe, więc wdrożenie serwera proxy interfejsu API nie powiodło się.
Rozdzielczość
Upewnij się, że wartość elementu <Expression>
w elemencie <JSONPath>
w zasadach ochrony wyrażeń regularnych jest prawidłowym wyrażeniem JSONPath.
Aby poprawić przykład pokazany powyżej, możesz dodać brakujący nawias kwadratowy 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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Jeśli zasada RegularExpressionProtection nie zawiera żadnych elementów <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
ani <JSONPayload>
, wdrożenie serwera proxy interfejsu API nie powiedzie się.
Jak wskazujemy w komunikacie o błędzie, zasada RegularExpressionProtection musi zawierać co najmniej jeden 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 poniższym 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ź nieudaną zasadę ochrony wyrażeń regularnych (opisanych w kroku 1 powyżej). Jeśli zasada nie zawiera nawet jednego z tych elementów:
<URIPath>
,<QueryParam>
,<Header>
,<FormParam>
,<XMLPayload>
lub<JSONPayload>
, jest to przyczyna błędu.Na przykład poniższe zasady ochrony za pomocą wyrażeń regularnych nie zawierają żadnych 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ż zasada Wyodrębnianie zmiennych nie zawiera żadnego z wymaganych elementów, wdrożenie serwera proxy interfejsu API się nie uda.
Rozdzielczość
Upewnij się, że zasada RegularExpressionProtection zawiera co najmniej jeden z tych wymaganych 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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Jeśli którykolwiek z elementów najwyższego poziomu (<URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
lub <JSONPayload>
) nie ma zdefiniowanego elementu <Pattern>
w zasadzie RegularExpressionProtection, wdrożenie serwera proxy interfejsu API nie powiedzie się.
Diagnostyka
Określ nazwę zasady RegularExpressionProtection, w której wystąpił błąd, oraz elementu podrzędnego, który nie zawiera elementu
<Pattern>
. 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 element podrzędny toXPath:
RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
- Sprawdź niespełnione zasady ochrony wyrażeń regularnych i upewnij się, że element podrzędny wskazany w kroku 1 nie zawiera elementu
<Pattern>
. Jeśli element<Pattern>
nie istnieje, to jest przyczyną błędu.Na przykład ta zasada nie zawiera elementu
<Pattern>
wewnątrz elementu<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>
Element
<XPath>
nie zawiera elementu<Pattern>
, więc wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem.
Rozdzielczość
Upewnij się, że każdy z elementów <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
lub <JSONPayload>
ma określony co najmniej 1 atrybut <Pattern>
. Informacje o tym, jak prawidłowo określić element, znajdziesz w artykule o zasadach RegularExpressionProtection.
Aby poprawić przykład powyżej, możemy dodać element <Pattern>
do elementu <XPath>
poniżej <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>
NONPusty przedrostek mapowany do pustego identyfikatora URI
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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Ten błąd występuje, jeśli zasada RegularExpressionProtection ma zdefiniowany prefiks w elemencie <Namespace>
w elemencie <XMLPayload>
, ale nie zdefiniowano identyfikatora URI.
Diagnostyka
Określ zasadę RegularExpressionProtection, w której wystąpił błąd, oraz nazwę prefiksu, który nie jest mapowany na identyfikator URI. Oba te elementy znajdziesz w komunikacie o błędzie.
W poniższym przykładzie w tym błędzie nazwa zasady to Ochrona wyrażeń regularnych 1, a prefiks to apigee:
RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
Sprawdź, czy nazwa prefiksu ustawionego w elemencie
<Namespace>
w elemencie<XMLPayload>
w pliku XML zasad ochrony wyrażeń regularnych jest zgodna z nazwą prefiksu podaną w komunikacie o błędzie (krok 1 powyżej).Na przykład ta zasada określa w elemencie
<Namespace>
prefiks o nazwie apigee, który odpowiada 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"/> <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>
o określonym prefiksie zidentyfikowanym w kroku 2 ma prawidłowy identyfikator URI. Jeśli brakuje identyfikatora URI, jest to przyczyna błędu.W przykładowej zasadzie ochrony wyrażeń regularnych opisanej powyżej nie ma identyfikatora URI odpowiadającego elementowi
<Namespace>
o prefiksie apigee, w związku z czym pojawia się błąd:Non-empty prefix apigee cannot be mapped to empty uri.
Rozdzielczość
Sprawdź, czy wszystkie elementy <Namespace>
zdefiniowane z prefiksem mają odpowiedni identyfikator URI w zasadzie Wyodrębnianie 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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Ten błąd występuje, jeśli zasada RegularExpressionProtection ma ten sam prefiks zdefiniowany więcej niż raz w elemencie <Namespace>
w elemencie <XMLPayload>
.
Ten błąd występuje na przykład, ponieważ prefiks apigee jest zdefiniowany dwukrotnie, tak jak poniżej:
<Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace>
Diagnostyka
Określ zasadę RegularExpressionProtection, w której wystąpił błąd, oraz nazwę prefiksu. Oba te elementy znajdziesz w komunikacie o błędzie.
W poniższym przykładzie w tym błędzie nazwa zasady to Ochrona wyrażeń regularnych 1, a prefiks to apigee:
RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
Sprawdź, czy nazwa prefiksu ustawionego w elemencie
<Namespace>
w elemencie<XMLPayload>
w pliku XML zasad ochrony wyrażeń regularnych jest zgodna z nazwą prefiksu podaną w komunikacie o błędzie (krok 1 powyżej).Na przykład ta zasada określa w elemencie
<Namespace>
prefiks o nazwie apigee, który odpowiada 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> <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>
o określonym prefiksie wskazany w kroku 2 został zdefiniowany więcej niż raz. Jeśli jest ono zdefiniowane więcej niż raz, to jest przyczyną błędu.W przedstawionej powyżej przykładowej zasadzie ochrony wyrażeń regularnych zwróć uwagę, że element
<Namespace>
z prefiksem apigee został zdefiniowany dwukrotnie, dlatego pojawia się błąd:Duplicate prefix apigee.
Rozdzielczość
Upewnij się, że każdy prefiks w elementach <Namespace>
w zasadzie RegularExpressionProtection ma tylko jedną definicję dla każdego prefiksu. 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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Jeśli zasada RegularExpressionProtection nie zawiera elementu <Expression>
w elemencie <XPath>
, wdrożenie serwera proxy interfejsu API nie powiedzie się.
Diagnostyka
Zidentyfikuj nieudaną zasadę ochrony wyrażeń regularnych na podstawie komunikatu o błędzie. Na przykład w tym błędzie nazwa zasady to: Regular-Expression-Protection-1.
RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
Sprawdź, czy w pliku XML zasad ochrony wyrażeń regularnych występuje element
<XMLPayload>
z elementem podrzędnym<XPath>
, który nie ma zdefiniowanego elementu<Expression>
, lub czy element<Expression>
nie ma ustawionej żadnej wartości. Jeśli tak, to jest jego przyczyna.Oto przykładowa zasada ochrony wyrażeń regularnych z 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></Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
Wdrożenie serwera proxy interfejsu API nie powiodło się, ponieważ w elemencie
<XPath>
występuje pusty element<Expression>
.
Rozdzielczość
Upewnij się, że RegularExpressionProtection (zasada RegularExpressionProtection) w elemencie <XPath>
ma zdefiniowany prawidłowy element <Expression>
(niepusty i prawidłowy). 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świetlany jest ten komunikat 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.
Zrzut ekranu z przykładowym błędem
Przyczyna
Jeśli zasada RegularExpressionProtection nie zawiera elementu <Expression>
w elemencie <JSONPath>
, wdrożenie serwera proxy interfejsu API nie powiedzie się.
Diagnostyka
Zidentyfikuj nieudaną zasadę ochrony wyrażeń regularnych na podstawie komunikatu o błędzie. Na przykład w tym błędzie nazwa zasady to: Regular-Expression-Protection-1.
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
Sprawdź, czy w pliku XML zasad ochrony wyrażeń regularnych, które nie zostały spełnione, sprawdź, czy zawiera element
<JSONPayload>
z elementem podrzędnym<JSONPath>
, który nie ma zdefiniowanego elementu<Expression>
, lub czy element<Expression>
nie ma ustawionej żadnej wartości. Jeśli tak, to jest jego przyczyna.Oto przykładowa zasada ochrony wyrażeń regularnych z elementem
<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>
Wdrożenie serwera proxy interfejsu API nie powiodło się, ponieważ w elemencie
<JSONPath>
występuje pusty element<Expression>
.
Rozdzielczość
Upewnij się, że RegularExpressionProtection (zasada RegularExpressionProtection) w elemencie <JSONPath>
ma zdefiniowany prawidłowy element <Expression>
(niepusty i prawidłowy). 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>