Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
ИнвалидРегулярноеВыражение
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
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.
Пример сообщения об ошибке
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.
Пример снимка экрана с ошибкой
Причина
Если регулярное выражение в элементе <Pattern>
политики RegularExpressionProtection недопустимо, развертывание прокси-сервера API завершается неудачно.
Диагностика
Определите имя политики RegularExpressionProtection из сообщения об ошибке. Например, в следующей ошибке имя политики RegularExpressionProtection —
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.
Проверьте все элементы
<Pattern>
в ошибочном XML-коде политики защиты регулярных выражений. Проверьте, не содержит ли какой-либо из элементов<Pattern>
недопустимое регулярное выражение. Если какой-либо из элементов<Pattern>
содержит недопустимое регулярное выражение, это и есть причина ошибки.Например, следующая политика определяет значение
Pattern>
offoo){2}
, которое считается недопустимым регулярным выражением:<?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>
В приведенном выше примере в регулярном выражении, указанном в
<Pattern>
, отсутствуют открывающие круглые скобки. Следовательно, оно считается недопустимым регулярным выражением. Таким образом, развертывание прокси-сервера API не удается.
Разрешение
Убедитесь, что каждый элемент <Pattern>
в политике RegularExpressionProtection содержит допустимое регулярное выражение. Вы можете искать различные онлайн- или офлайн-инструменты регулярных выражений для отладки регулярных выражений. Чтобы исправить пример политики защиты регулярных выражений, показанный выше, добавьте недостающие круглые скобки:
<?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
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
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.
Пример сообщения об ошибке
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.
Пример снимка экрана с ошибкой
Причина
Если префикс или значение, использованное в элементе <XPath>
, не является частью ни одного из объявленных пространств имен в политике RegularExpressionProtection , то развертывание прокси-сервера API завершается неудачно.
Дополнительную информацию о пространствах имен, XPath и префиксах можно найти в разделе «Пространства имен XML и как они влияют на XPath и XSLT» .
Диагностика
Определите имя политики RegularExpressionProtection , в которой произошла ошибка, и использованное выражение XPath. Оба эти элемента можно найти в сообщении об ошибке.
Например, в следующей ошибке имя политики —
Regular-Expression-Protection-1
, а выражение XPath —/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.
В неудавшемся XML-файле политики защиты регулярных выражений убедитесь, что XPath, установленный в элементе
Expression
, соответствует XPath, указанному в сообщении об ошибке (шаг № 1 выше).Например, следующая политика определяет XPath как
/notapigee:foo/notapigee:bar
что соответствует тому, что указано в сообщении об ошибке:<?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>
- Изучите элементы
<Namespaces>
и<Expression>
в политике RegularExpressionProtection . Если конкретное<Expression>
, указанное в сообщении об ошибке, использует префикс или значение, которое не является частью пространств имен, объявленных в политике RegularExpressionProtection , то это и есть причина ошибки.Обратите внимание, что конкретный
<XPath>
использует префиксnotapigee
в примере политики RegularExpressionProtection :<Expression>/notapigee:foo/notapigee:bar</Expression>
Однако префикс
notapigee
не определен ни в одном из элементов<Namespace>
; поэтому компиляция<XPath>
завершается неудачно, что приводит к сбою развертывания.
Разрешение
Убедитесь, что все пространства имен, используемые в элементах <Expression>
в элементах <XPath>
, объявлены в политике RegularExpressionProtection . Чтобы исправить приведенный выше пример, вы можете заменить префикс notapigee
на apigee
, который объявлен в пространствах имен:
<?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>
Каннотбеконвертедтонодесет
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
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.
Пример сообщения об ошибке
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.
Пример снимка экрана с ошибкой
Причина
Если в политике регулярных выражений есть выражение <XPath>
, в котором элемент <Type>
определен как nodeset , но это выражение невозможно преобразовать в nodeset, то развертывание прокси-сервера API завершается неудачно.
Диагностика
Определите политику RegularExpressionProtection , в которой произошла ошибка, и выражение XPath, которое невозможно преобразовать в набор узлов. Оба эти элемента можно найти в сообщении об ошибке.
Например, в следующей ошибке имя политики —
Regular-Expression-Protection-1
, а выражение XPath —count(//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.
В неудавшемся XML-файле политики защиты регулярных выражений убедитесь, что XPath, заданный в элементе
<Expression>
элемента<XPath>
, соответствует XPath, указанному в сообщении об ошибке (шаг № 1 выше).Например, следующая политика определяет as
count(//apigee:foo)
, что соответствует сообщению об ошибке:<?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>
Проверьте значение, установленное в элементе
<Type>
под элементом<XPath>
. Если элементом<Type>
являетсяnodeset
, это причина ошибки.В этом примере выражением XPath является count() , которое не возвращает один или несколько узлов. Таким образом, развертывание API-прокси завершается неудачно.
Разрешение
Если для элемента <Type>
установлено значение nodeset, убедитесь, что результатом элемента <Expression>
установленного в <XPath>
является один или несколько узлов. Альтернативно измените элемент <Type>
на более подходящее значение в зависимости от вашего варианта использования.
Чтобы исправить приведенный выше пример, вы можете изменить элемент <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> <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>
Ошибка компиляции JSONPath
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
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.
Пример сообщения об ошибке
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.
Пример снимка экрана с ошибкой
Причина
Если для элемента <Expression>
в элементе <JSONPath>
политики защиты регулярных выражений установлено недопустимое выражение JSONPath, то развертывание прокси-сервера API завершается неудачей.
Диагностика
Определите имя политики RegularExpressionProtection , в которой произошла ошибка и использовалось недопустимое выражение JSONPath. Оба эти элемента можно найти в сообщении об ошибке.
Например, в следующей ошибке имя политики —
Regular-Expression-Protection-1
, а выражение JSONPath —$.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.
В неудавшемся XML-коде политики защиты регулярных выражений убедитесь, что JSONPath, заданный в элементе
Expression
, соответствует JSONPath, указанному в сообщении об ошибке (шаг № 1 выше).Например, следующая политика определяет элемент
Expression
в элементе<JSONPath>
как$.store.book[*.author
, что соответствует тому, что указано в сообщении об ошибке:<?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>
Проверьте элемент
<Expression>
в элементе<JSONPath>
в политике. Если он не соответствует синтаксису JSONPath, это причина ошибки. В приведенном выше примере закрывающая квадратная скобка отсутствует, что делает выражение недействительным.Поскольку выражение пути JSON недопустимо, развертывание прокси-сервера API завершается неудачно.
Разрешение
Убедитесь, что значение элемента <Expression>
внутри элемента <JSONPath>
в политике защиты регулярных выражений является допустимым выражением JSONPath.
Чтобы исправить приведенный выше пример, вы можете добавить отсутствующую закрывающую квадратную скобку к значению элемента <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>
НичегоToEnforce
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision revision_number RegularExpressionProtection policy_name: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Пример сообщения об ошибке
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Пример снимка экрана с ошибкой
Причина
Если в политике RegularExpressionProtection нет элементов <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
или <JSONPayload>
, развертывание прокси-сервера API завершается неудачно.
Как указано в сообщении об ошибке, политика RegularExpressionProtection должна содержать хотя бы один из этих элементов, включенных в политику: <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
или <JSONPayload>
.
Диагностика
Определите имя политики RegularExpressionProtection , в которой произошла ошибка. Вы можете найти его в сообщении об ошибке. Например, в следующей ошибке имя политики —
Regular-Expression-Protection-1:
RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Проверьте неисправную политику защиты регулярных выражений (определенную на шаге 1 выше). Если в политике нет хотя бы одного из следующих элементов:
<URIPath>
,<QueryParam>
,<Header>
,<FormParam>
,<XMLPayload>
или<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> </RegularExpressionProtection>
Поскольку ни один из обязательных элементов не присутствует в политике извлечения переменных, развертывание прокси-сервера API завершается неудачей.
Разрешение
Убедитесь, что политика RegularExpressionProtection содержит хотя бы один из этих обязательных элементов: <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
или <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>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
NoPatternsToEnforce
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision revision_number RegularExpressionProtection policy_name: No patterns to enforce in payload_name.
Пример сообщения об ошибке
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
Пример снимка экрана с ошибкой
Причина
Если какой-либо из элементов верхнего уровня ( <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
или <JSONPayload>
) не имеет элемента <Pattern>
, определенного в политике RegularExpressionProtection , то развертывание прокси-сервера API не работает.
Диагностика
Определите имя политики RegularExpressionProtection , в которой произошла ошибка, и дочернего элемента, у которого нет элемента
<Pattern>
. Оба эти элемента можно найти в сообщении об ошибке.Например, в следующей ошибке имя политики —
Regular-Expression-Protection-1
, а дочерний элемент —XPath:
RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
- Проверьте неисправную политику защиты регулярных выражений и убедитесь, что дочерний элемент, определенный на шаге 1, не имеет элемента
<Pattern>
. Если в нем не существует элемента<Pattern>
, то это и есть причина ошибки.Например, в следующей политике нет элемента
<Pattern>
внутри<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>
Поскольку элемент
<XPath>
не имеет элемента<Pattern>
, развертывание прокси-сервера API завершается неудачно.
Разрешение
Убедитесь, что для любого из элементов <URIPath>
, <QueryParam>
, <Header>
, <FormParam>
, <XMLPayload>
или <JSONPayload>
указан хотя бы один <Pattern>
. См. политику RegularExpressionProtection для получения информации о том, как правильно указать элемент.
Чтобы исправить приведенный выше пример, мы могли бы просто добавить элемент <Pattern>
к элементу <XPath>
под <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
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Non-empty prefix prefix_name cannot be mapped to empty uri.
Пример сообщения об ошибке
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
Пример снимка экрана с ошибкой
Причина
Эта ошибка возникает, если политика RegularExpressionProtection имеет префикс, определенный в элементе <Namespace>
в элементе <XMLPayload>
, но URI не определен.
Диагностика
Определите политику RegularExpressionProtection , в которой произошла ошибка, и имя префикса, который не сопоставлен с URI. Оба эти элемента можно найти в сообщении об ошибке.
Например, в следующей ошибке имя политики — Regular Expression Protection-1, а префикс — apigee:
RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
В неудавшемся XML-файле политики защиты регулярных выражений убедитесь, что имя префикса, установленное в элементе
<Namespace>
под элементом<XMLPayload>
, соответствует имени префикса, указанному в сообщении об ошибке (шаг № 1 выше).Например, следующая политика определяет префикс с именем apigee в элементе
<Namespace>
, который соответствует тому, что указано в сообщении об ошибке:<?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>
Убедитесь, что элемент
<Namespace>
с определенным префиксом, указанным на шаге 2, имеет действительный URI. Если URI отсутствует, это причина ошибки.В примере политики защиты регулярных выражений, показанном выше, обратите внимание, что нет URI, соответствующего элементу
<Namespace>
с префиксом apigee; поэтому вы получаете ошибку:Non-empty prefix apigee cannot be mapped to empty uri.
Разрешение
Убедитесь, что все элементы <Namespace>
, определенные с помощью префикса, имеют соответствующий URI в политике извлечения переменных. Например:
<?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>
Повторяющийся префикс
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Duplicate prefix prefix_name.
Пример сообщения об ошибке
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
Пример снимка экрана с ошибкой
Причина
Эта ошибка возникает, если политика RegularExpressionProtection имеет один и тот же префикс, определенный более одного раза в элементе <Namespace>
в элементе <XMLPayload>
.
Например, эта ошибка возникает, поскольку префикс apigee определен дважды, как показано ниже:
<Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace>
Диагностика
Определите политику RegularExpressionProtection , в которой произошла ошибка, и имя префикса. Оба эти элемента можно найти в сообщении об ошибке.
Например, в следующей ошибке имя политики — Regular Expression Protection-1, а префикс — apigee:
RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
В неудавшемся XML-файле политики защиты регулярных выражений убедитесь, что имя префикса, установленное в элементе
<Namespace>
под элементом<XMLPayload>
, соответствует имени префикса, указанному в сообщении об ошибке (шаг № 1 выше).Например, следующая политика определяет префикс с именем apigee в элементе
<Namespace>
, который соответствует тому, что указано в сообщении об ошибке:<?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>
Определите, был ли элемент
<Namespace>
с определенным префиксом, указанным на шаге 2, определен более одного раза. Если он определен более одного раза, то это и есть причина ошибки.В приведенном выше примере политики защиты регулярных выражений обратите внимание, что элемент
<Namespace>
с префиксом apigee был определен дважды; поэтому вы получаете ошибку:Duplicate prefix apigee.
Разрешение
Убедитесь, что для каждого префикса в элементах <Namespace>
в политике RegularExpressionProtection существует только одно определение. Например:
<?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>
Пустое выражениеXPathExpression
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Empty XPath expression.
Пример сообщения об ошибке
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
Пример снимка экрана с ошибкой
Причина
Если в политике RegularExpressionProtection в элементе <XPath>
не установлен элемент <Expression>
, развертывание прокси-сервера API завершается неудачно.
Диагностика
Определите неисправную политику защиты регулярных выражений по сообщению об ошибке. Например, в следующей ошибке имя политики — Regular-Expression-Protection-1:
RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
В неудавшемся XML-коде политики защиты регулярных выражений определите, существует ли элемент
<XMLPayload>
с дочерним элементом<XPath>
, в котором не определен элемент<Expression>
, или элементу<Expression>
не присвоено какое-либо значение. Если да, то это и есть причина ошибки.Например, вот политика защиты регулярных выражений, имеющая элемент
<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>
Поскольку внутри элемента
<XPath>
имеется пустой элемент<Expression>
, развертывание прокси-сервера API завершается неудачей.
Разрешение
Убедитесь, что политика RegularExpressionProtection имеет непустой и допустимый элемент <Expression>
, определенный в элементе <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> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
Пустое выражениеJSONPathExpression
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Empty JSONPath expression.
Пример сообщения об ошибке
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
Пример снимка экрана с ошибкой
Причина
Если в политике RegularExpressionProtection в элементе <JSONPath>
не установлен элемент <Expression>
, развертывание прокси-сервера API завершается неудачно.
Диагностика
Определите неисправную политику защиты регулярных выражений по сообщению об ошибке. Например, в следующей ошибке имя политики — Regular-Expression-Protection-1:
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
В неудавшемся XML-коде политики защиты регулярных выражений определите, существует ли элемент
<JSONPayload>
с дочерним элементом<JSONPath>
, в котором не определен элемент<Expression>
, или элементу<Expression>
не присвоено какое-либо значение. Если да, то это и есть причина ошибки.Например, вот политика защиты регулярных выражений, имеющая элемент
<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>
Поскольку внутри элемента
<JSONPath>
имеется пустой элемент<Expression>
, развертывание прокси-сервера API завершается неудачно.
Разрешение
Убедитесь, что политика RegularExpressionProtection имеет непустой и допустимый элемент <Expression>
, определенный в элементе <JSONPath>
. Например:
<?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>