Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
НичегоToExtract
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory. Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Пример сообщения об ошибке
Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Пример скриншота

Причина
Если в политике извлечения переменных нет элементов URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload , развертывание прокси-сервера API завершится неудачно, поскольку нечего извлекать.
Как указано в сообщении об ошибке, политика извлечения переменных должна содержать хотя бы один из этих элементов, включенных в политику: URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload .
Диагностика
Изучите политику извлечения переменных, указанную в сообщении об ошибке. Если в политике нет хотя бы одного из следующих элементов: URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload , то это и есть причина ошибки. Например, следующая политика извлечения переменных не содержит ни одного из вышеупомянутых элементов:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Properties/>
</ExtractVariables>
Поскольку ни один из обязательных элементов не присутствует в политике извлечения переменных, развертывание прокси-сервера API завершается неудачно.
Разрешение
Убедитесь, что политика извлечения переменных содержит хотя бы один из этих обязательных элементов: URIPath , QueryParam , Header , FormParam , XMLPayload , JSONPayload . Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Properties/>
<Source>request</Source>
<XMLPayload>
<Namespaces/>
<Variable name="age" type="integer">
<XPath>/age</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
NONEmptyPrefixMappedToEmptyURI
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.
Пример сообщения об ошибке
Error Saving Revision 3
ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
Пример скриншота

Причина
Эта ошибка возникает, если политика извлечения переменных имеет префикс, определенный в элементе <Namespace> в элементе <XMLPayload> , но URI не определен.
Диагностика
Определите политику извлечения переменных, в которой произошла ошибка, и имя префикса. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики —
EV-XML-Age, а префикс —apigee:ExtractVariables EV-XML-Age: 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"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="apigee"></Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="legName" type="string"> <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath> </Variable> </XMLPayload> </ExtractVariables>Убедитесь, что элемент
<Namespace>с определенным префиксом, указанным на шаге 2, имеет действительный URI. Если URI отсутствует, это причина ошибки.В примере политики извлечения переменных, показанном выше, обратите внимание, что нет URI, соответствующего элементу
<Namespace>с префиксомapigee; поэтому вы получаете ошибку:ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
Разрешение
Убедитесь, что все элементы <Namespace> , определенные с помощью префикса, имеют соответствующий URI в политике извлечения переменных. Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
</Variable>
</XMLPayload>
</ExtractVariables>
Дубликат префикса
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается неудачно с этим сообщением об ошибке:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: Duplicate prefix [prefix_name].
Пример сообщения об ошибке
Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.
Пример скриншота

Причина
Эта ошибка возникает, если политика извлечения переменных имеет один и тот же префикс, определенный более одного раза в элементе <Namespace> в элементе <XMLPayload> .
Например, эта ошибка возникает, поскольку префикс apigee определен дважды, как показано ниже:
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
Диагностика
Определите политику извлечения переменных, в которой произошла ошибка, и имя префикса. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики —
EV-XML-Age, а префикс —apigee:ExtractVariables EV-XML-Age: Duplicate prefix apigee.В неудавшемся XML-файле политики извлечения переменных убедитесь, что имя префикса, установленное в элементе
<Namespace>под элементом<XMLPayload>, соответствует имени префикса, указанному в сообщении об ошибке (шаг № 1 выше). Например, следующая политика определяет префикс с именемapigeeв элементе<Namespace>, который соответствует тому, что указано в сообщении об ошибке:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="gmail">http://mail.google.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <Variable name="legName" type="string <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath> </Variable> </XMLPayload> </ExtractVariables>Определите, был ли элемент
<Namespace>с определенным префиксом, указанным на шаге 2, определен более одного раза. Если он определен более одного раза, то это и есть причина ошибки.В приведенном выше примере политики извлечения переменных обратите внимание, что элемент
<Namespace>с префиксомapigeeбыл определен дважды; поэтому вы получаете ошибку:ExtractVariables EV-XML-Age: Duplicate prefix apigee.
Разрешение
Убедитесь, что для каждого префикса в элементах <Namespace> в политике извлечения переменных существует только одно определение. Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
</Variable>
</XMLPayload>
</ExtractVariables>
NoXPathsToEvaluate
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision [revision_number] ExtractVariables [policy_name]:no xpaths to evaluate in variable name.
Пример сообщения об ошибке
Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
Пример скриншота

Причина
Если политика извлечения переменных не содержит элемента <XPath> в элементе <XMLPayload> , то развертывание прокси-сервера API завершается с ошибкой, показанной выше.
Диагностика
Определите неудавшуюся политику извлечения переменных из сообщения об ошибке. Например, в следующей ошибке имя политики —
Extract-Variables-1:ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.В неудавшемся XML-коде политики извлечения переменных проверьте, существует ли элемент
<XMLPayload>без дочернего элемента<XPath>. Если да, то это и есть причина ошибки.Например, вот политика извлечения переменных, в которой есть элемент
<XMLPayload>:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="HostReachable" type="boolean"> </Variable> </XMLPayload> </ExtractVariables>Поскольку элемент
<XPath>отсутствует, развертывание прокси-сервера API завершается неудачно.
Разрешение
Убедитесь, что в политике извлечения переменных есть элемент <XPath> , определенный в элементе <XMLPayload> . Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="HostReachable" type="boolean">
<XPath>/isReachable</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
Пустое выражениеXPathExpression
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: XPath expression is empty in variable name.
Пример сообщения об ошибке
Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.
Пример скриншота

Причина
Если политика извлечения переменных содержит пустое выражение <XPath> в элементе <XMLPayload> , развертывание прокси-сервера API завершается неудачей.
Диагностика
Определите неудавшуюся политику извлечения переменных из сообщения об ошибке. Например, в следующей ошибке имя политики —
Extract-Variables-1:ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.В неудавшемся XML-коде политики извлечения переменных определите, существует ли элемент
<XMLPayload>с пустым дочерним элементом<XPath>. Если да, то это и есть причина ошибки.Например, вот политика извлечения переменных, в которой есть элемент
<XMLPayload>:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="address" type="string"> <XPath></XPath> </Variable> </XMLPayload> </ExtractVariables>Поскольку внутри элемента
<XMLPayload>имеется пустой элемент<XPath>, развертывание прокси-сервера API завершается неудачно.
Разрешение
Убедитесь, что политика извлечения переменных имеет непустой и допустимый элемент <XPath> , определенный в элементе <XMLPayload> . Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="address" type="string">
<XPath>/address</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
NoJSONPathsToEvaluate
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается неудачно с этим сообщением об ошибке:
Error Saving Revision [revision_number] ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.
Пример сообщения об ошибке
Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
Пример скриншота

Причина
Если в политике извлечения переменных нет элемента <JSONPath> внутри элемента <JSONPayload> , то развертывание прокси-сервера API завершается с ошибкой, показанной выше.
Диагностика
Определите неудавшуюся политику извлечения переменных из сообщения об ошибке. Например, в следующей ошибке имя политики —
Extract-Variables-1:ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.В неудавшемся XML-файле политики извлечения переменных определите, существует ли элемент
<JSONPayload>без обязательного дочернего элемента<JSONPath>. Если да, то это и есть причина ошибки.Например, вот политика извлечения переменных с элементом
<JSONPayload>:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <JSONPayload> <Variable name="title"> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> </ExtractVariables>Поскольку в элементе
<JSONPayload>не определен дочерний элемент<JSONPath>, развертывание прокси-сервера API завершается неудачей.
Разрешение
Убедитесь, что в политике извлечения переменных есть элемент <JSONPath> , определенный в элементе <JSONPayload> . Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<JSONPayload>
<Variable name="title">
<JSONPath>$.book.title</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>
Пустое выражениеJSONPathExpression
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается неудачно с этим сообщением об ошибке:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: JSONPath expression is empty in variable name.
Пример сообщения об ошибке
Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
Пример скриншота

Причина
Если политика извлечения переменных содержит пустое выражение <JSONPath> внутри элемента <JSONPayload> , развертывание прокси-сервера API завершается неудачно.
Диагностика
Определите неудавшуюся политику извлечения переменных из сообщения об ошибке. Например, в следующей ошибке имя политики —
Extract-Variables-1:ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.В неудавшемся XML-коде политики извлечения переменных проверьте, существует ли элемент
<JSONPayload>с пустым дочерним элементом<JSONPath>. Если да, то это и есть причина ошибки.Например, вот политика извлечения переменных, в которой есть элемент
<JSONPayload>:<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <JSONPayload> <Variable name="account_number" type="integer"> <JSONPath></JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> </ExtractVariables>Поскольку внутри элемента
<JSONPayload>имеется пустой элемент<JSONPath>, развертывание прокси-сервера API завершается неудачно.
Разрешение
Убедитесь, что в политике извлечения переменных есть непустой и допустимый элемент <JSONPath> , определенный в элементе <JSONPayload> . Например:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<JSONPayload>
<Variable name="account_number" type="integer">
<JSONPath>$.account.number</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>
Отсутствует имя
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается неудачно с этим сообщением об ошибке:
Error Saving Revision [revision_number] Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]
Пример сообщения об ошибке
Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
Пример скриншота

Причина
Если политика извлечения переменных не имеет атрибута name ни в одном из элементов политики, таких как QueryParam , Header , FormParam или Variable , где это необходимо, то развертывание прокси-сервера API завершается неудачно.
Например, эта ошибка возникает, если атрибут name отсутствует в элементе Variable .
Диагностика
Определите имя политики извлечения переменных, в которой произошла ошибка, и элемент, в котором атрибут
nameотсутствует. Эти элементы можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики —Extract-Variables-1, а имя элемента —Variable:Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in VariableВ неудавшемся XML-файле политики извлечения переменных убедитесь, что все элементы с именем, определенным на шаге 1 выше, имеют атрибут
name. Если есть какой-либо элемент, у которого атрибут имени отсутствует, это и есть причина ошибки.Например, в следующей политике извлечения переменных определен элемент
<Variable>:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Variable type="boolean"> <Pattern>{isAccountActive}</Pattern> </Variable> </ExtractVariables>Обратите внимание, что атрибут
nameотсутствует в элементеVariable, поэтому развертывание прокси-сервера API завершается неудачей.
Разрешение
Убедитесь, что политика извлечения переменных содержит обязательный атрибут name для элементов QueryParam , Header , FormParam или Variable . Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Variable name="account_active" type="boolean">
<Pattern>{isAccountActive}</Pattern>
</Variable>
</ExtractVariables>
ШаблонБезПеременной
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается неудачно с этим сообщением об ошибке:
Error Saving Revision [revision_number] Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]
Пример сообщения об ошибке
Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
Пример скриншота

Причина
Если в политике извлечения переменных не указана переменная в элементе <Pattern> , развертывание прокси-сервера API завершается неудачно. Элемент <Pattern> требует имени переменной, в которой будут храниться извлеченные данные.
Диагностика
Определите имя политики извлечения переменных, в которой произошла ошибка, и шаблон, в котором переменная отсутствует. Эти элементы можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики —
Extract-Variables-1, а имя элемента —/a/b:Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.В неудавшемся XML-файле политики извлечения переменных убедитесь, что шаблон, заданный в элементе
<Pattern>, соответствует шаблону, указанному в сообщении об ошибке (шаг № 1 выше). Например, следующая политика определяет шаблон/a/b, который соответствует сообщению об ошибке:Например, вот политика извлечения переменных, содержащая три элемента
<Pattern>:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> <Pattern ignoreCase="true">/a/b/</Pattern> <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>Проверьте, нет ли в элементе
<Pattern>, указанном на шаге 2, переменной. Переменные должны быть заключены в фигурные скобки. Если в шаблоне нет переменной, то это и есть причина ошибки.Элемент
<Pattern>, имеющий шаблон /a/b , не включает переменную; поэтому развертывание прокси-сервера API завершается неудачей.<Pattern ignoreCase="true">/a/b/</Pattern>
Разрешение
Убедитесь, что все элементы <Pattern> содержат переменную (имя, заключенное в фигурные скобки). Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
Каннотбеконвертедтонодезет
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается неудачно с этим сообщением об ошибке:
Error Deploying Revision [revision_number] ExtractVariables [policy_name]: Result of xpath [policy_name] cannot be converted to nodeset. Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Пример сообщения об ошибке
Error Deploying Revision 4 to test
ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
Пример скриншота

Причина
Если в политике извлечения переменных есть выражение <XPath> , где тип <Variable> определен как nodeset , но это выражение невозможно преобразовать в nodeset, то развертывание прокси-сервера API завершается неудачей.
Диагностика
Определите политику извлечения переменных, в которой произошла ошибка, и XPath, который невозможно преобразовать в набор узлов. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики —
Extract-Variables-1, а XPath —123.ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.В неудавшемся XML-файле политики извлечения переменных убедитесь, что XPath, установленный в элементе
<XPath>, соответствует XPath, указанному в сообщении об ошибке (шаг № 1 выше). Например, следующая политика определяеткак 123, что соответствует сообщению об ошибке:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>visitor</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="age" type="nodeset"> <XPath>123</XPath> </Variable> </XMLPayload> </ExtractVariables>Проверьте тип элемента
<Variable>соответствующий<XPath>, указанному на шаге 2 выше. Если тип<Variable>—nodeset, это причина ошибки.Обратите внимание, что в примере политики извлечения переменных выражение
<XPath>имеет123.<XPath>123</XPath>Выражение
123невозможно преобразовать в набор узлов. Таким образом, развертывание API-прокси завершается неудачей.
Разрешение
Убедитесь, что выражения <XPath> , используемые в политике извлечения переменных, можно преобразовать в набор узлов, если тип <Variable> определен как набор узлов. Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>visitor</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="age" type="nodeset">
<XPath>/visitor/age</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
Инвалидпаттерн
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой с этим сообщением об ошибке:
Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]
Пример сообщения об ошибке
Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
Пример скриншота

Причина
Если определение элемента <Pattern> недопустимо в любом из элементов, таких как URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload в политике извлечения переменных, то развертывание прокси-сервера API завершается неудачно.
Диагностика
Определите ошибочную политику извлечения переменных из сообщения об ошибке. Например, в следующей ошибке имя политики —
Extract-Variables-2:Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.В неудавшемся XML-коде политики извлечения переменных проверьте, присутствует ли какой-либо из этих элементов, и включите элемент
<Pattern>:URIPath,QueryParam,Header,FormParam,XMLPayloadилиJSONPayload.Например, вот пример политики извлечения переменных с элементом
<Pattern>внутри элемента<QueryParam>:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractVariables-2"> <DisplayName>ExtractVariables-2</DisplayName> <Source>request</Source> <QueryParam name="code"> <Pattern ignoreCase="true">{*}</Pattern> </QueryParam> <VariablePrefix>queryinfo</VariablePrefix> </ExtractVariables>Изучите определение каждого элемента
<Pattern>. Если есть какой-либо элемент<Pattern>с недопустимым определением, это и есть причина ошибки.В приведенном выше примере политики извлечения переменных обратите внимание, что определение
<Pattern>в элементе<QueryParam>недопустимо; поэтому развертывание прокси-сервера API завершается неудачей. См. также О сопоставлении и создании переменных.<Pattern ignoreCase="true">{*}</Pattern>
Разрешение
Убедитесь, что определение элемента <Pattern> в элементах URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload в политике извлечения переменных является допустимым. Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-2">
<DisplayName>Extract a value from a query parameter</DisplayName>
<Source>request</Source>
<QueryParam name="code">
<Pattern ignoreCase="true">{code}</Pattern>
</QueryParam>
<VariablePrefix>queryinfo</VariablePrefix>
</ExtractVariables>
См. также О сопоставлении и создании переменных.
XPathCompilationFailed
Сообщение об ошибке
Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:
Error Deploying Revision [revision_number] ExtractVariables [policy_name]: Failed to compile xpath [xpath] Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Пример сообщения об ошибке
Error Deploying Revision 1 to test
ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
Пример скриншота

Причина
Если префикс или значение, используемые в элементе <XPath> , не являются частью ни одного из пространств имен, объявленных в политике извлечения переменных, то развертывание прокси-сервера API завершается неудачно.
Дополнительную информацию о пространствах имен, XPath и префиксах можно найти в разделе «Пространства имен XML и как они влияют на XPath и XSLT» .
Диагностика
Определите политику извлечения переменных, в которой произошла ошибка, и XPath, который не удалось скомпилировать. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики —
EV-XML-Age, а xpath —/apigee:Directions/apigee:route/apigee:leg/apigee:name.ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.В неудавшемся XML-файле политики извлечения переменных убедитесь, что XPath, установленный в элементе
<XPath>, соответствует XPath, указанному в сообщении об ошибке (шаг № 1 выше). Например, следующая политика определяеткак /apigee:Directions/apigee:route/apigee:leg/apigee:name, что соответствует сообщению об ошибке:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="legName" type="string"> <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath> </Variable> </XMLPayload> </ExtractVariables>Проверьте элементы
<Namespaces>и<XPath>в политике извлечения переменных. Если конкретный<XPath>, указанный в сообщении об ошибке, использует префикс или значение, которое не является частью пространств имен, объявленных в политике извлечения переменных, то это и есть причина ошибки.Обратите внимание, что конкретный
<XPath>использует префиксapigeeв примере политики извлечения переменных.<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>Однако префикс
apigeeне определен ни в одном из элементов<Namespace>; поэтому компиляция<XPath>завершается неудачно, что приводит к сбою развертывания.
Разрешение
Убедитесь, что все пространства имен, используемые в элементах <XPath> , объявлены в политике извлечения переменных. Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>