Solucionar problemas de errores de implementación de la política Extract Variables

Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

NothingToExtract

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 2.

Causa

Si la política Extract Variables no tiene ninguno de los elementos URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload, no se podrá desplegar el proxy de API, ya que no habrá nada que extraer.

Como se indica en el mensaje de error, la política Extract Variables debe incluir al menos uno de estos elementos: URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload.

Diagnóstico

Examina la política Extract Variables que se menciona en el mensaje de error. Si la política no tiene al menos uno de los siguientes elementos: URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload, esa es la causa del error. Por ejemplo, la política Extract Variables siguiente no tiene ninguno de los elementos mencionados anteriormente:

<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Properties/>
</ExtractVariables>

Como ninguno de los elementos obligatorios está presente en la política Extract Variables, no se puede implementar el proxy de API.

Resolución

Asegúrate de que la política Extraer variables tenga al menos uno de estos elementos obligatorios: URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

Error al guardar la revisión 3.

Causa

Este error se produce si la política Extract Variables tiene un prefijo definido en el elemento <Namespace> del elemento <XMLPayload>, pero no se ha definido ningún URI.

Diagnóstico

  1. Identifica la política Extract Variables en la que se ha producido el error y el nombre del prefijo. Puedes encontrar ambos elementos en el mensaje de error. Por ejemplo, en el siguiente error , el nombre de la política es EV-XML-Age y el prefijo es apigee:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. En el XML de la política Extract Variables que ha fallado, comprueba que el nombre del prefijo definido en el elemento <Namespace> del elemento <XMLPayload> coincida con el nombre del prefijo identificado en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica un prefijo llamado apigee en el elemento <Namespace> , que coincide con lo que aparece en el mensaje de error:

    <?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. Valida si el elemento <Namespace> con el prefijo específico identificado en el paso 2 tiene un URI válido. Si falta el URI, esa es la causa del error.

    En la política Extract Variables de ejemplo que se muestra arriba, observe que no hay ningún URI correspondiente al elemento <Namespace> con el prefijo apigee. Por lo tanto, se produce el siguiente error:

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

Resolución

Asegúrate de que todos los elementos <Namespace> definidos con un prefijo tengan un URI correspondiente en la política Extract Variables. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Duplicate prefix [prefix_name].

Ejemplo de mensaje de error

Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 2.

Causa

Este error se produce si la política Extract Variables tiene el mismo prefijo definido más de una vez en el elemento <Namespace> del elemento <XMLPayload>.

Por ejemplo, este error se produce porque el prefijo apigee se define dos veces, como se muestra a continuación:

<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>

Diagnóstico

  1. Identifica la política Extract Variables en la que se ha producido el error y el nombre del prefijo. Puedes encontrar ambos elementos en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es EV-XML-Age y el prefijo es apigee:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. En el XML de la política Extract Variables que ha fallado, comprueba que el nombre del prefijo definido en el elemento <Namespace> del elemento <XMLPayload> coincida con el nombre del prefijo identificado en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica un prefijo llamado apigee en el elemento <Namespace> , que coincide con lo que aparece en el mensaje de error:

    <?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. Determina si el elemento <Namespace> con el prefijo específico, identificado en el paso 2, se ha definido más de una vez. Si se define más de una vez, esa es la causa del error.

    En el ejemplo de política Extract Variables que se muestra arriba, observa que el elemento <Namespace> con el prefijo apigee se ha definido dos veces. Por lo tanto, se produce el siguiente error:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

Resolución

Asegúrate de que solo haya una definición para cada prefijo en los elementos <Namespace> de la política Extract Variables. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no xpaths to evaluate in variable name.

Ejemplo de mensaje de error

Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 4.

Causa

Si la política Extract Variables no tiene el elemento <XPath> dentro del elemento <XMLPayload>, la implementación del proxy de API fallará y se mostrará el error de arriba.

Diagnóstico

  1. Identifica la política Extract Variables que ha fallado en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. En el XML de la política Extract Variables que ha fallado, comprueba si hay un elemento <XMLPayload> sin el elemento secundario <XPath>. Si es así, esa es la causa del error.

    Por ejemplo, a continuación se muestra una política Extract Variables que tiene un elemento <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>
    

    Como no hay ningún elemento <XPath>, la implementación del proxy de API falla.

Resolución

Asegúrate de que la política Extract Variables tenga un elemento <XPath> definido en el elemento <XMLPayload>. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: XPath expression is empty in variable name.

Ejemplo de mensaje de error

Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.

Captura de pantalla de ejemplo

Error al guardar la revisión 6.

Causa

Si la política Extract Variables tiene una expresión <XPath> vacía en el elemento <XMLPayload>, la implementación del proxy de API falla.

Diagnóstico

  1. Identifica la política Extract Variables que ha fallado en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. En el XML de la política Extract Variables que ha fallado, determina si hay un elemento <XMLPayload> con un elemento secundario <XPath> vacío. Si es así, esa es la causa del error.

    Por ejemplo, a continuación se muestra una política Extract Variables que tiene un elemento <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>
    

    Como hay un elemento <XPath> vacío dentro del elemento <XMLPayload>, no se puede implementar el proxy de API.

Resolución

Asegúrate de que la política Extract Variables tenga un elemento <XPath> no vacío y válido definido en el elemento <XMLPayload>. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.

Ejemplo de mensaje de error

Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.

Captura de pantalla de ejemplo

Error al guardar la revisión 6.

Causa

Si la política Extract Variables no tiene el elemento <JSONPath> dentro del elemento <JSONPayload>, la implementación del proxy de API fallará y se mostrará el error de arriba.

Diagnóstico

  1. Identifica la política Extract Variables que ha fallado en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. En el XML de la política Extract Variables que ha fallado, determina si hay un elemento <JSONPayload> sin el elemento secundario obligatorio <JSONPath>. Si es así, esa es la causa del error.

    Por ejemplo, a continuación se muestra una política Extract Variables que tiene el elemento <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>
    

    Como no hay ningún elemento secundario <JSONPath> definido en el elemento <JSONPayload>, la implementación del proxy de API falla.

Resolución

Asegúrate de que la política Extract Variables tenga un elemento <JSONPath> definido en el elemento <JSONPayload>. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: JSONPath expression is empty in variable name.

Ejemplo de mensaje de error

Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.

Captura de pantalla de ejemplo

Error al guardar la revisión 6.

Causa

Si la política Extract Variables tiene una expresión <JSONPath> vacía en el elemento <JSONPayload>, la implementación del proxy de API falla.

Diagnóstico

  1. Identifica la política Extract Variables que ha fallado en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Extract-Variables-1:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. En el XML de la política Extract Variables fallida, comprueba si hay un elemento <JSONPayload> con un elemento secundario <JSONPath> vacío. Si es así, esa es la causa del error.

    Por ejemplo, a continuación se muestra una política Extract Variables que tiene un elemento <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>
    

    Como hay un elemento <JSONPath> vacío dentro del elemento <JSONPayload>, no se puede implementar el proxy de API.

Resolución

Asegúrate de que la política Extract Variables tenga un elemento <JSONPath> no vacío y válido definido en el elemento <JSONPayload>. Por ejemplo:

<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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Saving Revision [revision_number]
Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]

Ejemplo de mensaje de error

Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable

Captura de pantalla de ejemplo

Error al guardar la revisión 6.

Causa

Si la política Extract Variables no tiene el atributo name en ninguno de los elementos de la política, como QueryParam, Header, FormParam o Variable, donde es obligatorio, se producirá un error en la implementación del proxy de API.

Por ejemplo, este error se produce si falta el atributo name en un elemento Variable.

Diagnóstico

  1. Identifica el nombre de la política Extract Variables en la que se ha producido el error y el elemento en el que falta el atributo name. Puedes encontrar estos elementos en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Extract-Variables-1 y el nombre del elemento es Variable:

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    
  2. En el archivo XML de la política Extract Variables que ha fallado, comprueba que todos los elementos con el nombre determinado en el paso 1 tengan un atributo name. Si falta el atributo name en algún elemento, ese es el motivo del error.

    Por ejemplo, la siguiente política Extract Variables tiene definido el elemento <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>
    

    Observa que falta el atributo name en el elemento Variable, por lo que la implementación del proxy de API falla.

Resolución

Asegúrate de que la política Extract Variables contenga el atributo name obligatorio para los elementos QueryParam, Header, FormParam o Variable. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Saving Revision [revision_number]
Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]

Ejemplo de mensaje de error

Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 7.

Causa

Si la política Extract Variables no tiene ninguna variable especificada en el elemento <Pattern>, la implementación del proxy de API fallará. El elemento <Pattern> requiere el nombre de la variable en la que se almacenarán los datos extraídos.

Diagnóstico

  1. Identifica el nombre de la política Extract Variables en la que se ha producido el error y el patrón para el que falta la variable. Puedes encontrar estos elementos en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Extract-Variables-1 y el nombre del elemento es /a/b:

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. En el archivo XML de la política Extract Variables que ha fallado, compruebe que el patrón definido en el elemento <Pattern> coincide con el patrón identificado en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica un patrón /a/b, que coincide con lo que aparece en el mensaje de error:

    Por ejemplo, a continuación se muestra una política Extract Variables que tiene tres elementos <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. Comprueba si el elemento <Pattern> identificado en el paso 2 no tiene una variable. Las variables deben escribirse entre llaves. Si el patrón no tiene una variable, esa es la causa del error.

    El elemento <Pattern> que tiene el patrón /a/b no incluye una variable, por lo que la implementación del proxy de API falla.

    <Pattern ignoreCase="true">/a/b/</Pattern>
    
    

Resolución

Asegúrate de que todos los elementos <Pattern> incluyan una variable (un nombre entre llaves). Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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.

Captura de pantalla de ejemplo

Error al implementar la revisión 4 en la prueba.

Causa

Si la política Extract Variables tiene una expresión <XPath> en la que el tipo <Variable> se define como nodeset, pero la expresión no se puede convertir en nodeset, se produce un error al desplegar el proxy de API.

Diagnóstico

  1. Identifica la política Extract Variables en la que se ha producido el error y el XPath que no se puede convertir en un conjunto de nodos. Puedes encontrar ambos elementos en el mensaje de error. Por ejemplo, en el siguiente error , el nombre de la política es Extract-Variables-1 y el XPath es 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. En el archivo XML de la política Extract Variables que ha fallado, compruebe que el XPath definido en el elemento <XPath> coincide con el XPath identificado en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica como 123, que coincide con lo que se indica en el mensaje de error:

    <?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. Examina el tipo del elemento <Variable> correspondiente al <XPath> identificado en el paso 2 anterior. Si el tipo <Variable> es nodeset, esa es la causa del error.

    Ten en cuenta que la expresión <XPath> es 123 en la política Extract Variables de ejemplo.

    <XPath>123</XPath>
    

    La expresión 123 no se puede convertir en un conjunto de nodos. Por lo tanto, el despliegue del proxy de API falla.

Resolución

Asegúrate de que las expresiones <XPath> que se usan en la política Extraer variables se puedan convertir en un conjunto de nodos si el tipo <Variable> se define como conjunto de nodos. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]

Ejemplo de mensaje de error

Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.

Captura de pantalla de ejemplo

Error al implementar la revisión 18 en la prueba.

Causa

Si la definición del elemento <Pattern> no es válida en ninguno de los elementos, como URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload, de la política Extract Variables, se producirá un error al implementar el proxy de API.

Diagnóstico

  1. Identifica la política Extract Variables que falla a partir del mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Extract-Variables-2:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. En el archivo XML de la política Extract Variables que ha fallado, compruebe si alguno de estos elementos está presente e incluya un elemento <Pattern>: URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload.

    Por ejemplo, aquí tienes una política Extract Variables con un elemento <Pattern> dentro de un elemento <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. Consulta la definición de cada uno de los elementos <Pattern>. Si hay algún elemento <Pattern> con una definición no válida, ese es el motivo del error.

    En el ejemplo de política Extract Variables que se muestra arriba, observa que la definición de <Pattern> dentro del elemento <QueryParam> no es válida. Por lo tanto, la implementación del proxy de API falla. Consulta también Información sobre la creación de variables y la coincidencia.

    <Pattern ignoreCase="true">{*}</Pattern>
    
    

Resolución

Comprueba que la definición del elemento <Pattern> en los elementos URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload de la política Extract Variables sea válida. Por ejemplo:

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

Consulta también Información sobre la creación de variables y la coincidencia.

XPathCompilationFailed

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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.

Captura de pantalla de ejemplo

Error al implementar la revisión 1 en la prueba.

Causa

Si el prefijo o el valor usado en el elemento <XPath> no forma parte de ninguno de los espacios de nombres declarados en la política Extract Variables, se producirá un error al implementar el proxy de API.

Puedes consultar más información sobre los espacios de nombres, XPath y los prefijos en el artículo Espacios de nombres XML y cómo afectan a XPath y XSLT.

Diagnóstico

  1. Identifica la política Extract Variables en la que se ha producido el error y el XPath que no se ha podido compilar. Puedes encontrar ambos elementos en el mensaje de error. Por ejemplo, en el siguiente error , el nombre de la política es EV-XML-Age y el xpath es /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. En el archivo XML de la política Extract Variables que ha fallado, compruebe que el XPath definido en el elemento <XPath> coincide con el XPath identificado en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica como /apigee:Directions/apigee:route/apigee:leg/apigee:name, que coincide con lo que se indica en el mensaje de error:

    <?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. Examina los elementos <Namespaces> y <XPath> de la política Extract Variables. Si el <XPath> específico indicado en el mensaje de error usa un prefijo o un valor que no forma parte de los espacios de nombres declarados en la política Extraer variables, esa es la causa del error.

    Observe que el <XPath> específico usa el prefijo apigee en la política de ejemplo Extraer variables.

    <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
    

    Sin embargo, el prefijo apigee no se ha definido en ninguno de los elementos <Namespace>, por lo que la compilación de <XPath> falla y se produce un error en la implementación.

Resolución

Asegúrate de que todos los espacios de nombres que se usen en los elementos <XPath> se declaren en la política Extract Variables. Por ejemplo:

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