Solución de problemas de error de implementación de la política de extracción de variable

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

NothingToExtract

Mensaje de error

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 2.

Causa

Si la política de extracción de variables no tiene ninguno de los elementos URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload, la implementación del proxy de API falla debido a que no hay nada que extraer.

Como se indica en el mensaje de error, la política de Extracción de variables debe tener al menos uno de los siguientes elementos incluidos en la política: URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload.

Diagnóstico

Examina la política de extracción de variables que se nombra en el mensaje de error. Si la política no tiene ni siquiera uno de los siguientes elementos: URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload, esa es la causa del error. Por ejemplo, la siguiente política de extracción de variables no tiene ninguno de los elementos mencionados antes:

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

Dado que ninguno de los elementos obligatorios está presente en la política de Extracción de variables, la implementación del proxy de API falla.

Solución

Asegúrate de que la política de Extracción de variables tenga al menos uno de los siguientes elementos obligatorios: URIPath, QueryParam, Header, FormParam, XMLPayload, 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 3.

Causa

Este error se produce si la política de extracción de variables tiene un prefijo definido debajo del elemento <Namespace> en el elemento <XMLPayload>, pero no se define un URI.

Diagnóstico

  1. Identifica la política de extracción de variables en la que se produjo 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 archivo XML de la política de extracción de variables con errores, verifica que el nombre del prefijo establecido en el elemento <Namespace> dentro del elemento <XMLPayload> coincida con el nombre del prefijo identificado en el mensaje de error (paso 1 anterior). Por ejemplo, en la siguiente política se especifica un prefijo llamado apigee en el elemento <Namespace>, que coincide con el contenido del 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 n.º 2 tiene un URI válido. Si falta el URI, esa es la causa del error.

    En la política de extracción de variables de ejemplo anterior, ten en cuenta que no hay un URI correspondiente al elemento <Namespace> con el prefijo apigee. Por lo tanto, verás el siguiente error:

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

Solución

Asegúrate de que todos los elementos <Namespace> definidos con un prefijo tengan el URI correspondiente en la política de extracción de 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 2.

Causa

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

Por ejemplo, este error se produce, ya que 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 de extracción de variables en la que se produjo 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 archivo XML de la política de extracción de variables con errores, verifica que el nombre del prefijo establecido en el elemento <Namespace> dentro del elemento <XMLPayload> coincida con el nombre del prefijo identificado en el mensaje de error (paso 1 anterior). Por ejemplo, en la siguiente política se especifica un prefijo llamado apigee en el elemento <Namespace>, que coincide con el contenido del 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, que se identificó en el paso n.º 2, se definió más de una vez. Si es así, esa es la causa del error.

    En la política de extracción de variables del ejemplo anterior, ten en cuenta que el elemento <Namespace> con el prefijo apigee se definieron dos veces. Por lo tanto, verás el siguiente error:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

Solución

Asegúrate de que haya solo una definición para cada prefijo en los elementos <Namespace> en la política deExtracción de 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 4.

Causa

Si la política de extracción de variables no tiene el elemento <XPath> dentro del elemento <XMLPayload>, la implementación del proxy de API falla con el error que se muestra antes.

Diagnóstico

  1. Identifica la política de extracción de variables que falló del 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 archivo XML de la política de extracción de variables con errores, verifica si hay un elemento <XMLPayload> sin el elemento secundario <XPath>. Si es así, esa es la causa del error.

    Por ejemplo, esta es una política de extracción de 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> presente, la implementación del proxy de API falla.

Solución

Asegúrate de que la política de Extracción de 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 6.

Causa

Si la política de extracción de variables tiene una expresión <XPath> vacía dentro del elemento <XMLPayload>, fallará la implementación del proxy de API.

Diagnóstico

  1. Identifica la política de extracción de variables que falló del 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 archivo XML de la política de extracción de variables con errores, determina si hay un elemento secundario <XMLPayload> con un elemento secundario <XPath> vacío. Si es así, esa es la causa del error.

    Por ejemplo, esta es una política de extracción de 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>
    

    Dado que hay un elemento <XPath> vacío dentro del elemento <XMLPayload>, la implementación del proxy de API falla.

Solución

Asegúrate de que la política de extracción de variables tenga un elemento <XPath> no válido 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 6.

Causa

Si la política de extracción de variables no tiene el elemento <JSONPath> dentro del elemento <JSONPayload>, la implementación del proxy de API falla con el error que se muestra antes.

Diagnóstico

  1. Identifica la política de extracción de variables que falló del 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 archivo XML de la política de extracción de variables con errores, determina si hay un elemento <JSONPayload> sin el elemento secundario <JSONPath> requerido. Si es así, esa es la causa del error.

    Por ejemplo, esta es una política de extracción de variables que tiene un 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>
    

    La implementación del proxy de API fallará debido a que no hay un elemento secundario <JSONPath> definido en el elemento <JSONPayload>.

Solución

Asegúrate de que la política de extracción de 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 6.

Causa

Si la política de extracción de variables tiene una expresión <JSONPath> vacía dentro del elemento <JSONPayload>, fallará la implementación del proxy de API.

Diagnóstico

  1. Identifica la política de extracción de variables que falló del 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 archivo XML de la política de extracción de variables con errores, verifica si hay un elemento <JSONPayload> con un elemento secundario <JSONPath> vacío. Si es así, esa es la causa del error.

    Por ejemplo, esta es una política de extracción de 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>
    

    Dado que hay un elemento <JSONPath> vacío dentro del elemento <JSONPayload>, la implementación del proxy de API falla.

Solución

Asegúrate de que la política de extracción de variables tenga un elemento <JSONPath> no válido 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 6.

Causa

Si la política de extracción de variables no tiene el atributo name en ninguno de los elementos de la política como QueryParam, Header, FormParam o Variable en los casos necesarios, la implementación del proxy de la API falla.

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

Diagnóstico

  1. Identifica el nombre de la política extracción de variables en que se produjo el error y el elemento al que le 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 extracción de variables con errores, comprueba que todos los elementos con el nombre determinado en el paso 1 anterior tengan un atributo name. Si falta algún elemento en el atributo de nombre, esa es la causa del error.

    Por ejemplo, la siguiente política de extracción de variables tiene el elemento <Variable> definido:

    <?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 falla la implementación del proxy de API.

Solución

Asegúrate de que la política de extracción de variables contenga el atributo name requerido 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Se produjo un error al guardar la revisión 7.

Causa

Fallará la implementación del proxy de API si la política de extracción de variables no tiene una variable especificada en el elemento <Pattern>. 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 de extracción de variables en la que se produjo 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 de extracción de variables con errores, verifica que el patrón que se establece en el elemento <Pattern> coincida con el patrón identificado en el mensaje de error (paso 1 anterior). Por ejemplo, en la siguiente política, se especifica un patrón /a/b, que coincide con el contenido del mensaje de error:

    Por ejemplo, esta es una política de extracción de 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 incluirse 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 tanto, fallará la implementación del proxy de API

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

Solución

Asegúrate de que cualquier elemento <Pattern> incluya 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Error durante la implementación de la revisión 4 para realizar una prueba.

Causa

Si la política de extracción de variable tiene una expresión <XPath> en la que el tipo <Variable> se define como conjunto de nodos, pero la expresión no se puede convertir en el conjunto de nodos, la implementación de la API de proxy falla.

Diagnóstico

  1. Identifica la política de extracción de variables en la que se produjo el error y la XPath que no se puede convertir en el nodeset. 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 la 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 de extracción de variables de error, verifica que la XPath definida en el elemento <XPath> coincida con la XPath identificada en el mensaje de error (paso n.o 1 anterior). Por ejemplo, la siguiente política especifica como 123, que coincide con lo que contiene 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 de elemento <Variable> correspondiente al <XPath> identificado en el paso 2. Si el elemento <Variable> es nodeset, esa es la causa del error.

    Observa que la expresión <XPath> es 123 en la política de extracción de variables de ejemplo.

    <XPath>123</XPath>
    

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

Solución

Asegúrate de que las expresiones <XPath> usadas en la política de extracción de 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

Si la implementación del proxy de API a través de la IU de Apigee o la API falla, mostrará con 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 del ejemplo.

Error durante la implementación de la revisión 18 para realizar una 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, dentro de la política de extracción de variables, fallará la implementación del proxy de API.

Diagnóstico

  1. Identifica la política de extracción de variables que falló 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 de extracción de variables de error, verifica si alguno de estos elementos está presente e incluye un elemento <Pattern>: URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload.

    Por ejemplo, a continuación, se muestra un ejemplo de una política de extracción de variables con un elemento <Pattern> dentro del 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. Examina la definición de cada uno de los elementos <Pattern>. Si hay algún elemento <Pattern> con una definición no válida, esa es la causa del error.

    En la política de extracción de variables de ejemplo que se muestra arriba, ten en cuenta que la definición <Pattern> dentro del elemento <QueryParam> no es válida. Por lo tanto, la implementación del proxy de API fallará. Consulta también Acerca de la coincidencia y la creación de variables

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

Solución

Asegúrate de que la definición del elemento <Pattern> dentro de los elementos URIPath, QueryParam, Header, FormParam, XMLPayload o JSONPayload de la política de extracción de 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 Acerca de la coincidencia y la creación de variables

XPathCompilationFailed

Mensaje de error

La implementación del proxy de API a través de la IU o la API de Apigee falla con 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 del ejemplo.

Error durante la implementación de la revisión 1 para realizar una prueba.

Causa

La implementación del proxy de API fallará si el prefijo o el valor que se usó en el elemento <XPath> no forma parte de los espacios de nombres declarados en la política de extracción de variables.

Puede encontrar más información sobre los espacios de nombres, la XPath y el prefijo en Espacios de nombres XML y cómo afectan las XPath y XSLT.

Diagnóstico

  1. Identifica la política de extracción de variables en la que se produjo el error y la XPath que no se pudo 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 la 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 de extracción de variables de error, verifica que la XPath definida en el elemento <XPath> coincida con la XPath identificada en el mensaje de error (paso n.o 1 anterior). Por ejemplo, la siguiente política especifica como /apigee:Directions/apigee:route/apigee:leg/apigee:name, que coincide con lo que contiene 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> en la política de extracción de variables. Si el <XPath> específico indicado en el mensaje de error usa un prefijo o valor que no forma parte de los espacios de nombres declarados en la política de extracción de variables, esa es la causa del error.

    Ten en cuenta que el <XPath> específico usa el prefijo apigee en la política de extracción de variables de ejemplo.

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

    Sin embargo, el prefijo apigee no se define en ninguno de los elementos <Namespace>. Por lo tanto, la compilación de <XPath> falla lo que da lugar a un error de implementación.

Solución

Asegúrate de que todos los espacios de nombres que se usan en los elementos <XPath> se declaren en la política de extracción de 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>