Устранение неполадок при развертывании правила "Извлечь переменные"

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

NothingToExtract

Сообщение об ошибке

Развертывание прокси-сервера 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>

Поскольку в правиле Extract Variables нет ни одного обязательного элемента, развертывание прокси-сервера 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.

диагностика;

  1. Определите правило Extract Variables, в котором произошла ошибка, и название префикса. Оба этих элемента можно найти в сообщении об ошибке. Например, в приведенном ниже сообщении об ошибке название правила – EV-XML-Age , а префикс – apigee:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. В XML-коде неудачного правила Extract Variables убедитесь, что название префикса, заданное в элементе <Namespace> под элементом <XMLPayload>, совпадает с названием префикса, указанным в сообщении об ошибке (шаг 1 выше). Например, в приведенном ниже правиле в элементе <Namespace> указан префикс apigee , который соответствует префиксу в сообщении об ошибке:

    <?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>
    
  3. Проверьте, есть ли у элемента <Namespace> с префиксом, определенным на шаге 2, действительный URI. Если URI отсутствует, это и есть причина ошибки.

    В примере правила "Извлечь переменные", приведенном выше, обратите внимание, что для элемента <Namespace> с префиксом apigee нет URI. В результате возникает ошибка:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
    

Разрешение

Убедитесь, что все элементы <Namespace>, определенные с префиксом, имеют соответствующий URI в правиле Extract Variables. Пример:

<?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>

DuplicatePrefix

Сообщение об ошибке

Развертывание прокси-сервера 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>

диагностика;

  1. Определите правило Extract Variables, в котором произошла ошибка, и название префикса. Оба этих элемента можно найти в сообщении об ошибке. Например, в приведенном ниже сообщении об ошибке название правила – EV-XML-Age, а префикс – apigee:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. В XML-коде неудачного правила Extract Variables убедитесь, что название префикса, заданное в элементе <Namespace> под элементом <XMLPayload>, совпадает с названием префикса, указанным в сообщении об ошибке (шаг 1 выше). Например, в приведенном ниже правиле в элементе <Namespace> указан префикс apigee , который соответствует префиксу в сообщении об ошибке:

    <?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>
    
  3. Проверьте, не был ли элемент <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 завершится с ошибкой, показанной выше.

диагностика;

  1. Определите, какое правило "Извлечь переменные" не удалось выполнить, по сообщению об ошибке. Например, в следующем сообщении об ошибке название правила – Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. В XML-файле правила Extract Variables, которое не удалось выполнить, проверьте, есть ли элемент <XMLPayload> без дочернего элемента <XPath>. Если да, то это и есть причина ошибки.

    Ниже приведен пример политики Extract Variables с элементом <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 не удается.

Разрешение

Убедитесь, что в правиле Extract Variables элемент <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>

EmptyXPathExpression

Сообщение об ошибке

Развертывание прокси-сервера 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.

Пример скриншота

Причина

Если в правиле извлечения переменных в элементе <XMLPayload> есть пустое выражение <XPath>, развертывание прокси-сервера API завершится неудачно.

диагностика;

  1. Определите, какое правило "Извлечь переменные" не удалось выполнить, по сообщению об ошибке. Например, в следующем сообщении об ошибке название правила – Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. В XML-файле правила Extract Variables, которое не удалось выполнить, определите, есть ли элемент <XMLPayload> с пустым дочерним элементом <XPath>. Если да, то это и есть причина ошибки.

    Ниже приведен пример политики Extract Variables с элементом <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 завершается неудачно.

Разрешение

Убедитесь, что в правиле извлечения переменных под элементом <XMLPayload> определен непустой и действительный элемент <XPath>. Пример:

<?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 завершится с ошибкой, показанной выше.

диагностика;

  1. Определите, какое правило "Извлечь переменные" не удалось выполнить, по сообщению об ошибке. Например, в следующем сообщении об ошибке название правила – Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. В XML-файле правила "Извлечь переменные", которое не удалось выполнить, определите, есть ли элемент <JSONPayload> без обязательного дочернего элемента <JSONPath>. Если да, то это и есть причина ошибки.

    Ниже приведен пример политики Extract Variables с элементом <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 завершается неудачно.

Разрешение

Убедитесь, что в правиле Extract Variables под элементом <JSONPayload> определен элемент <JSONPath>. Пример:

<?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>

EmptyJSONPathExpression

Сообщение об ошибке

Развертывание прокси-сервера 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.

Пример скриншота

Причина

Если в правиле извлечения переменных в элементе <JSONPayload> есть пустое выражение <JSONPath>, развертывание прокси-сервера API завершится неудачно.

диагностика;

  1. Определите, какое правило "Извлечь переменные" не удалось выполнить, по сообщению об ошибке. Например, в следующем сообщении об ошибке название правила – Extract-Variables-1:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. В XML-файле неудачной политики извлечения переменных проверьте, есть ли элемент <JSONPayload> с пустым дочерним элементом <JSONPath>. Если да, то это и есть причина ошибки.

    Ниже приведен пример политики Extract Variables с элементом <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 завершается неудачно.

Разрешение

Убедитесь, что в правиле извлечения переменных под элементом <JSONPayload> определен непустой и действительный элемент <JSONPath>. Пример:

<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>

MissingName

Сообщение об ошибке

Развертывание прокси-сервера 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 завершится неудачно.

Например, эта ошибка возникает, если в элементе Variable отсутствует атрибут name.

диагностика;

  1. Определите название правила извлечения переменных, в котором произошла ошибка, и элемент, в котором отсутствует атрибут name. Эти элементы можно найти в сообщении об ошибке. Например, в приведенной ниже ошибке название правила – Extract-Variables-1, а название элемента – Variable:

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    
  2. В XML-файле правила Extract Variables (Извлечь переменные), которое не удалось выполнить, убедитесь, что у всех элементов с названием, определенным на шаге 1, есть атрибут name. Если в каком-либо элементе отсутствует атрибут 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>
    

    Обратите внимание, что в элементе Variable отсутствует атрибут name, поэтому развертывание прокси 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>

PatternWithoutVariable

Сообщение об ошибке

Развертывание прокси-сервера 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> требуется название переменной, в которой будут храниться извлеченные данные.

диагностика;

  1. Определите название правила "Извлечь переменные", в котором произошла ошибка, и шаблон, для которого отсутствует переменная. Эти элементы можно найти в сообщении об ошибке. Например, в приведенной ниже ошибке название правила – Extract-Variables-1, а название элемента – /a/b:

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. В XML-файле правила Extract Variables, которое не удалось выполнить, убедитесь, что шаблон, заданный в элементе <Pattern>, соответствует шаблону, указанному в сообщении об ошибке (шаг 1 выше). Например, в следующем правиле задан шаблон /a/b, который соответствует тексту сообщения об ошибке:

    Ниже приведен пример политики Extract Variables с тремя элементами <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>
    
  3. Проверьте, не содержит ли элемент <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>

CannotBeConvertedToNodeset

Сообщение об ошибке

Развертывание прокси-сервера 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 завершится неудачно.

диагностика;

  1. Определите правило Extract Variables, в котором произошла ошибка, и 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.
    
  2. В XML-файле правила Extract Variables, которое не удалось выполнить, убедитесь, что путь 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>
    
  3. Проверьте тип элемента <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>

InvalidPattern

Сообщение об ошибке

Развертывание прокси-сервера 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 завершится неудачно.

диагностика;

  1. Определите правило "Извлечь переменные", которое не удалось выполнить, по сообщению об ошибке. Например, в следующем сообщении об ошибке название правила – Extract-Variables-2:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. В XML-файле политики Extract Variables, который не удалось обработать, проверьте, есть ли какие-либо из этих элементов и содержит ли он элемент <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>
    
  3. Изучите определение каждого элемента <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 Namespaces and How They Affect XPath and XSLT.

диагностика;

  1. Определите правило Extract Variables, в котором произошла ошибка, и 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.
    
  2. В XML-файле правила Extract Variables, которое не удалось выполнить, убедитесь, что путь 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>
    
  3. Проверьте элементы <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>