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

Вы просматриваете документацию 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&quo>t<; standalone="yes"?
    ExtractVariables async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Ex>tract<-Variables->1&quo<t;
        DisplayNameExtract V>ariable<s-1/Dis>playN<ame
        Proper>ties/
    <    Source clea>rPayl<oad="false"request/Source
        >VariableP<refixapigee>/Variable<Prefix
        XMLPayload stopPayloadProc>essing="<false><">
            <Namespace>s/
      <      Varia>b<le name="add>ress" type="string"
                XPath/XPath
            /Variable
        /XMLPayload
    /ExtractVariables
    

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

Разрешение

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

<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ExtractVariables async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Ex>tract<-Variables->1&quo<t;
    DisplayNameExtract V>ariable<s-1/Dis>playN<ame
    Proper>ties/
<    Source clea>rPayl<oad="false"request/Source
    >VariableP<refixapigee>/Variable<Prefix
    XMLPayload stopPayloadProc>essing="<false>"
 <      > Namespac<es/
     >   Va<riable name>=<"address&quo>t; 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&quo>t<; standalone="yes"?
    ExtractVariables async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Ex>tract<-Variables->1&quo<t;
        Disp>layNameEx<tract Variables-1/Dis>playName
    <    Prope>rties</
        JSONPa>yload<
            Variable name=&quo>t;title<"<>/span>
         <   /Variable
     >   /JS<ONPayload
        S>o<urce clearPayload>="false"request/Source
        VariablePrefixapigee/VariablePrefix
    /ExtractVariables
    

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

Разрешение

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

<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ExtractVariables async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Ex>tract<-Variables->1&quo<t;
    Disp>layNameEx<tract Variables-1/Dis>playName
    <Properti>es/
    JSON<Payload
 >       Va<riable na>me=&q<uot;title&qu>ot;
 <           JSONPath$.book.t>itle/JS<ONPath<>/span>
     <   /Variable
 >   /JS<ONPayload
    S>o<urce clearPayload>="false"request/Source
    VariablePrefixapigee/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&qu>ot; name=<"Extra>ct-Variables-1"<;
            Di>splayName<Extract Var>iables-1/<DisplayName>
            Prop<erties/
            JSONPayload
                Varia>ble name="ac<count_nu><mber">; type="<integer&q>uot;
        <            >JSONPath/<JSONPath
                /Varia>ble
       <     /J>SONPayloa<d
            Sour>ce cle<arPayload=">;fals<e"request/So>urce
            VariablePrefixapigee/VariablePrefix
        /ExtractVariables
    

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

Разрешение

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

<ExtractVariables async="false" continueOnError="false" enabled="true&qu>ot; n<ame="E>xtract-Variables-1&<quot;
    Di>splay<NameExtract> Vari<ables-1/Dis>playName
<    Properties/
    JSONPayload
        Varia>ble name=&qu<ot;accou>nt_number" <type=&quo>t;integer<"
  >     <    JSONPath>$.acc<ount.number/JSONPath
      >  /Vari<able
  >  /JS<ONPayload
    >Source< clearPayload=&>q<uot;false"re>quest/Source
    VariablePrefixapigee/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&quo>t<; standalone="yes"?
    ExtractVariables async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Ex>tract<-Variables->1&quo<t;
        DisplayNameExtra>ct Variab<les-1/D>isplayName
        Pr<operties>/
       < Variable> <type="boolea>n"
            Pattern{isAccountActive}/Pattern
        /Variable
    /ExtractVariables
    

    Обратите внимание, что атрибут name отсутствует в элементе Variable , поэтому развертывание прокси-сервера API завершается неудачей.

Разрешение

Убедитесь, что политика извлечения переменных содержит обязательный атрибут name для элементов QueryParam , Header , FormParam или Variable . Например:

<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ExtractVariables async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Ex>tract<-Variables->1&quo<t;
    DisplayNameExtract Variables-1/Display>Name
    <Propert>ies/
    Variable< name=&q>uot;a<ccount_ac>t<ive" type=&q>uot;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&quo>t<; standalone="yes"?
    ExtractVaria>bles< name=>"E<xtractV>aria<bles-1&>quot;
     <  Sourcerequest/Source
      > URIPath
       <   Patte>rn igno<reCase="true"/a>/{pat<hSeg}/Pa>ttern
     <     Pattern ignoreCase=&>quot;true"/<a/b//Pat>tern<
          P>atte<rn ignoreCase=>"true<"/a/b/c/{p>a<thSeg}/Pattern
      > /URIPath
       VariablePrefixurirequest/VariablePrefix
    /ExtractVariables
    
  3. Проверьте, нет ли в элементе <Pattern> , указанном на шаге 2, переменной. Переменные должны быть заключены в фигурные скобки. Если в шаблоне нет переменной, то это и есть причина ошибки.

    Элемент <Pattern> , имеющий шаблон /a/b , не включает переменную; поэтому развертывание прокси-сервера API завершается неудачей.

    <Pattern ignoreCase=">true&<quot;/a/>b//Pattern
    
    

Разрешение

Убедитесь, что все элементы <Pattern> содержат переменную (имя, заключенное в фигурные скобки). Например:

<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ExtractVaria>bles< name=>"E<xtractV>aria<bles-1&>quot;
 <  Sourcerequest/Source
  > URIPath
   <   Patte>rn igno<reCase="true"/a>/{pathSeg}/Pat<tern
   >   Patt<ern ignoreCase="true>"/a/b/{path<Seg}/Pat>tern<
      P>atte<rn ignoreCase=>"true<"/a/b/c/{p>a<thSeg}/Pattern
  > /URIPath
   VariablePrefixurirequest/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&quo>t<; standalone="yes"?
    ExtractVariables async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Ex>tract<-Variables->1&quo<t;
        DisplayNameExtract V>ariable<s-1/Dis>playN<ame
        Proper>ties/
     <   Source clear>Paylo<ad="false"request/Source
        V>ariablePr<efixvisitor>/Variable<Prefix
        XMLPayload stopPayloadP>rocessing=&qu<ot;fa>lse<">
            <Namespace>s/
      <      Varia>b<le name="age>&quot; type="nodeset"
                XPath123/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&quo>t<; standalone="yes"?
ExtractVariables async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Ex>tract<-Variables->1&quo<t;
    DisplayNameExtract V>ariable<s-1/Dis>playN<ame
    Proper>ties/
 <   Source clear>Paylo<ad="false"request/Source
    V>ariablePr<efixvisitor>/Variable<Prefix
    XMLPayload stopPayloadP>rocessing=&qu<ot;fa>lse"
  <      >Namespace<s/
      >  Var<iable name=>&<quot;age" ty>pe="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&quo>t<; standalone="yes"?
    ExtractVaria>bles <name=">ExtractVariables-2<"
        D>ispla<yNameE>xtractV<ariable>s-2/D<isplayName
        Sourcer>equest/So<urce
        QueryParam name=>&qu<ot;code&>quot;<
            Pa>ttern< ignoreCase=&q>uot;true&<quot;{*}/Patter>n<
        /QueryParam
    >    VariablePrefixqueryinfo/VariablePrefix
    /ExtractVariables
    
  3. Изучите определение каждого элемента <Pattern> . Если есть какой-либо элемент <Pattern> с недопустимым определением, это и есть причина ошибки.

    В приведенном выше примере политики извлечения переменных обратите внимание, что определение <Pattern> в элементе <QueryParam> недопустимо; поэтому развертывание прокси-сервера API завершается неудачей. См. также О сопоставлении и создании переменных.

    <Pattern ignoreCase=">tru<e"{>*}/Pattern
    
    

Разрешение

Убедитесь, что определение элемента <Pattern> в элементах URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload в политике извлечения переменных является допустимым. Например:

<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
ExtractVaria>bles <name=">ExtractVariables-2"
    DisplayNa<meExtract a >value< from >a query< parame>ter/D<isplayName
    Sourcer>equest/So<urce
    QueryParam name=>"<code&quo>t;
  <      Patte>rn ig<noreCase=">;true&quo<t;{code}/Patter>n<
    /QueryParam
>    VariablePrefixqueryinfo/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&quo>t<; standalone="yes"?
    ExtractVariables async="false" continueOnError=>&qu<ot;false&qu>ot; enable<d="true>&qu<ot; name="EV-XML-Age&q>uot;
      <Display>Nam<eEV-XML-Age/DisplayName
      Source clearPa>yload<="fal>se"r<equest/Source
      XMLPaylo>ad stopPayloadProcessi<ng="f>alse&<quot;
        N>amesp<aces
            Namespace prefix="g>mail&<quot;>http://mail.google.com/Namespace
        /Namespaces
        V<ariabl>e name=&q<uot;legNa>me&<quot; type=>&<quot;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&quo>t<; standalone="yes"?
ExtractVariables async="false" continueOnError=>&qu<ot;false&qu>ot; enable<d="true>&qu<ot; name="EV-XML-Age&q>uot;
  <Display>Nam<eEV-XML-Age/DisplayName
  Source clearPa>yload<="fal>se"r<equest/Source
  XMLPayloa>d stopPayloadProcessi<ng="f>alse"<;
    Namespaces
       > Namespace prefix=&quo<t;apigee&q>uot;h<ttp://www.a>pigee<.com/Namespace
        Namespace pref>ix="<gmail>"http://mail.google.com/Namespace
    /Namespaces<
    V>ariab<le name=&>quo<t;legName&q>u<ot; type="st>ring"
        XPath/apigee:Directions/apigee:route/apigee:leg/apigee:name/XPath
    /Variable
  /XMLPayload
/ExtractVariables