Вы просматриваете документацию 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>