Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
InvalidRegularExpression
Сообщение об ошибке
Развертывание прокси-сервера 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 policy –
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>задано значениеfoo){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 Namespaces and How They Affect XPath and 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>в правилах защиты на основе регулярных выражений. Если в элементе<Expression>, указанном в сообщении об ошибке, используется префикс или значение, не входящее в пространства имен, объявленные в правиле RegularExpressionProtection, то это и является причиной ошибки.Обратите внимание, что в примере Правила защиты регулярных выражений в определенном элементе
<XPath>используется префиксnotapigee:<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>
CannotBeConvertedToNodeset
Сообщение об ошибке
Развертывание прокси-сервера 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 выше).Например, в следующем правиле указано значение
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>
JSONPathCompilationFailed
Сообщение об ошибке
Развертывание прокси-сервера 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 Path недействительно, развертывание прокси 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>
NothingToEnforce
Сообщение об ошибке
Развертывание прокси-сервера 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>Поскольку в правиле Extract Variables нет ни одного обязательного элемента, развертывание прокси-сервера 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>. Подробнее о том, как правильно указать элемент…
Чтобы исправить приведенный выше пример, можно добавить элемент <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 выше).Например, в следующем правиле в элементе
<Namespace>указан префикс 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"/> <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 отсутствует, это и есть причина ошибки.В примере правила защиты на основе регулярных выражений, показанном выше, обратите внимание, что для элемента
<Namespace>с префиксом apigee нет URI. Поэтому возникает ошибка:Non-empty prefix apigee cannot be mapped to empty uri.
Разрешение
Убедитесь, что все элементы <Namespace>, определенные с префиксом, имеют соответствующий URI в правиле Extract Variables. Пример:
<?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
Сообщение об ошибке
Развертывание прокси-сервера 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 выше).Например, в следующем правиле в элементе
<Namespace>указан префикс 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> <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>
EmptyXPathExpression
Сообщение об ошибке
Развертывание прокси-сервера 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 нет элемента <Expression> в элементе <XPath>, развертывание прокси-сервера 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 под элементом <XPath> определен непустой и действительный элемент <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:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> </RegularExpressionProtection>
EmptyJSONPathExpression
Сообщение об ошибке
Развертывание прокси-сервера 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 нет элемента <Expression> в элементе <JSONPath>, развертывание прокси-сервера 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 под элементом <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>