Устранение ошибок развертывания политики извлечения переменных

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

Диагностика

  1. Определите политику извлечения переменных, в которой произошла ошибка, и имя префикса. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики — EV-XML-Age , а префикс — apigee :

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. В неудавшемся 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>
    
  3. Убедитесь, что элемент <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>

Диагностика

  1. Определите политику извлечения переменных, в которой произошла ошибка, и имя префикса. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики — EV-XML-Age , а префикс — apigee :

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. В неудавшемся 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>
    
  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-файле политики извлечения переменных проверьте, существует ли элемент <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 завершается неудачей.

Диагностика

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

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. В неудавшемся 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 завершается с ошибкой, показанной выше.

Диагностика

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

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. В неудавшемся 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 завершается неудачно.

Диагностика

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

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. В неудавшемся 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 .

Диагностика

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

Диагностика

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

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. В неудавшемся 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>
    
  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>

Каннотбеконвертедтонодесет

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

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

Инвалидпаттерн

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

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

Диагностика

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