Solução de problemas de erros na implantação da política Extract Variables

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

NothingToExtract

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Se a política não tiver os elementos URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload, a implantação do API Proxy falhará , porque não há nada para extrair.

Como indicado na mensagem de erro, a política precisa ter pelo menos um destes elementos incluídos na política: URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload

Diagnóstico

Analise a política nomeada na mensagem de erro. Se a política não tiver ainda um dos seguintes elementos: URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload, essa é a causa do erro. Por exemplo, a seguinte política não tem nenhum dos elementos mencionados acima:

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

Como nenhum dos elementos obrigatórios está presente na política Extract Variables, a implantação do proxy da API falha.

Resolução

Verifique se a política tem pelo menos um destes elementos obrigatórios: URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload. Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Esse erro ocorrerá se a política de variáveis de extração tiver um prefixo definido no elemento <Namespace> no elemento <XMLPayload>, mas nenhum URI for definido.

Diagnóstico

  1. Identifique a política de variáveis de extração em que o erro ocorreu e o nome do prefixo. É possível encontrar os dois itens na mensagem de erro. Por exemplo, no erro a seguir , o nome da política é EV-XML-Age e o prefixo é apigee:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. No XML de política de extração de variáveis com falha, verifique se o nome do prefixo definido no elemento <Namespace> no elemento <XMLPayload> corresponde ao nome do prefixo identificado na mensagem de erro (etapa 1 acima). Por exemplo, a política a seguir especifica um prefixo chamado apigee no elemento <Namespace>, que corresponde ao que está na mensagem de erro:

    <?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. Valide se o elemento <Namespace> com o prefixo específico identificado na etapa 2 tem um URI válido. Se o URI estiver ausente, essa é a causa do erro.

    No exemplo de política de extração de variáveis mostrado acima, observe que não há URI correspondente ao elemento <Namespace> com o prefixo apigee; Portanto, você receberá o erro:

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

Resolução

Verifique se todos os elementos <Namespace> definidos com um prefixo têm um URI correspondente na política de variáveis de extração. Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Esse erro ocorrerá se a política de variáveis de extração tiver o mesmo prefixo definido mais de uma vez no elemento <Namespace>, no elemento <XMLPayload>.

Por exemplo, esse erro ocorre porque o prefixo apigee é definido duas vezes, conforme mostrado abaixo:

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

Diagnóstico

  1. Identifique a política de variáveis de extração em que o erro ocorreu e o nome do prefixo. É possível encontrar os dois itens na mensagem de erro. Por exemplo, no erro a seguir, o nome da política é EV-XML-Age e o prefixo é apigee:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. No XML de política de extração de variáveis com falha, verifique se o nome do prefixo definido no elemento <Namespace> no elemento <XMLPayload> corresponde ao nome do prefixo identificado na mensagem de erro (etapa 1 acima). Por exemplo, a política a seguir especifica um prefixo chamado apigee no elemento <Namespace>, que corresponde ao que está na mensagem de erro:

    <?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. Determine se o elemento <Namespace> com o prefixo específico, identificado na etapa 2, foi definido mais de uma vez. Se ela for definida mais de uma vez, essa é a causa do erro.

    No exemplo de política de extração de variáveis mostrado acima, observe que o elemento <Namespace> com o prefixo apigee foi definido duas vezes; Portanto, você receberá o erro:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

Resolução

Verifique se há apenas uma definição para cada prefixo nos elementos <Namespace> da política de variáveis de extração. Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Se a política de variáveis de extração não tiver o elemento <XPath> no elemento <XMLPayload>, a implantação do proxy de API falhará com o erro mostrado acima.

Diagnóstico

  1. Identifique a política de extração de variáveis com falha da mensagem de erro. Por exemplo, no erro a seguir, o nome da política é Extract-Variables-1.

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. No XML de política de extração de variáveis com falha, verifique se há um elemento <XMLPayload> sem o elemento filho <XPath>. Em caso afirmativo, essa é a causa do erro.

    Por exemplo, veja uma política de variáveis de extração que tem um 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 não há elemento <XPath>, a implantação do API Proxy falha.

Resolução

Verifique se a política de variáveis de extração tem um elemento <XPath> definido no elemento <XMLPayload>. Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Se a política de variáveis de extração tiver uma expressão <XPath> vazia no elemento <XMLPayload>, a implantação do proxy de API falhará.

Diagnóstico

  1. Identifique a política de extração de variáveis com falha da mensagem de erro. Por exemplo, no erro a seguir, o nome da política é Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. No XML da política de extração de variáveis com falha, determine se há um elemento <XMLPayload> com um elemento filho <XPath> vazio. Em caso afirmativo, essa é a causa do erro.

    Por exemplo, veja uma política de variáveis de extração que tem um 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 há um elemento <XPath> vazio no elemento <XMLPayload>, a implantação do API Proxy falha.

Resolução

Verifique se a política de variáveis de extração tem um elemento <XPath> não vazio e válido definido no elemento <XMLPayload>. Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Se a política de variáveis de extração não tiver o elemento <JSONPath> dentro do elemento <JSONPayload>, a implantação do proxy de API falhará com o erro mostrado acima.

Diagnóstico

  1. Identifique a política de extração de variáveis com falha da mensagem de erro. Por exemplo, no erro a seguir, o nome da política é Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. No XML da política de extração de variáveis com falha, determine se há um elemento <JSONPayload> sem o elemento filho <JSONPath> necessário. Em caso afirmativo, essa é a causa do erro.

    Por exemplo, veja uma política de variáveis de extração que tem o 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 não há nenhum elemento filho <JSONPath> definido no elemento <JSONPayload>, a implantação do API Proxy falha.

Resolução

Verifique se a política de variáveis de extração tem um elemento <JSONPath> definido no elemento <JSONPayload>. Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Se a política de variáveis de extração tiver uma expressão <JSONPath> vazia no elemento <JSONPayload>, a implantação do proxy de API falhará.

Diagnóstico

  1. Identifique a política de extração de variáveis com falha da mensagem de erro. Por exemplo, no erro a seguir, o nome da política é Extract-Variables-1:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. No XML da política de extração de variáveis com falha, verifique se há um elemento <JSONPayload> com um elemento filho <JSONPath> vazio. Em caso afirmativo, essa é a causa do erro.

    Por exemplo, veja uma política de variáveis de extração que tem um 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 há um elemento <JSONPath> vazio no elemento <JSONPayload>, a implantação do API Proxy falha.

Resolução

Verifique se a política de variáveis de extração tem um elemento <JSONPath> não vazio e válido definido no elemento <JSONPayload>. Por exemplo:

<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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Se a política de variáveis de extração não tiver o atributo name em nenhum dos elementos de política, como QueryParam, Header, FormParam ou Variable, quando necessário, a implantação de o proxy da API falhará.

Por exemplo, este erro ocorrerá se o atributo name estiver ausente em um elemento Variable.

Diagnóstico

  1. Identifique o nome da política de variáveis de extração em que o erro ocorreu e o elemento no qual o atributo name está ausente. Você encontra esses itens na mensagem de erro. Por exemplo, no erro a seguir, o nome da política é Extract-Variables-1 e o nome do elemento é Variable:

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    
  2. No XML da política de extração de variáveis com falha, verifique se todos os elementos com o nome determinado na etapa 1 acima têm um atributo name. Se houver algum elemento em que o atributo de nome esteja ausente, essa é a causa do erro.

    Por exemplo, a seguinte política de variáveis de extração tem o 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>
    

    Observe que o atributo name está ausente no elemento Variable, então a implantação do API Proxy falha.

Resolução

Verifique se a política de variáveis de extração contém o atributo name obrigatório para os elementos QueryParam, Header, FormParam ou Variable. Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Se a política de variáveis de extração não tiver uma variável especificada no elemento <Pattern>, a implantação do proxy de API falhará. O elemento <Pattern> requer o nome da variável em que os dados extraídos serão armazenados.

Diagnóstico

  1. Identifique o nome da política de variáveis de extração em que o erro ocorreu e o padrão no qual a variável está ausente. Você pode encontrar esses itens na mensagem de erro. Por exemplo, no erro a seguir, o nome da política é Extract-Variables-1 e o nome do elemento é /a/b:

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. No XML da política de extração com falha, verifique se o padrão definido no elemento <Pattern> corresponde ao padrão identificado na mensagem de erro (etapa 1 acima). Por exemplo, a política a seguir especifica um padrão /a/b, que corresponde ao que está na mensagem de erro:

    Por exemplo, veja uma política de variáveis de extração que tem três 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. Verifique se o elemento <Pattern> identificado na etapa 2 não tem uma variável. As variáveis precisam ser colocadas entre chaves. Se o padrão não tiver uma variável, essa é a causa do erro.

    O elemento <Pattern> que tem o padrão /a/b não inclui uma variável. Portanto, a implantação do proxy da API falha

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

Resolução

Garanta que todos os elementos <Pattern> incluam uma variável (um nome entre chaves). Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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 tela de exemplo

Causa

Se a política de variáveis de extração tiver uma expressão <XPath> em que o tipo <Variable> é definido como nodeset, mas a expressão não puder ser convertida em nodeset, a implantação do proxy de API falhará.

Diagnóstico

  1. Identifique a política de extração de variáveis em que o erro ocorreu e o XPath que não pode ser convertido para o conjunto de nós. É possível encontrar os dois itens na mensagem de erro. Por exemplo, no erro a seguir , o nome da política é Extract-Variables-1 e o 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. No XML da política de extração com falha, verifique se o XPath definido no elemento <XPath> corresponde ao XPath identificado na mensagem de erro (etapa 1 acima). Por exemplo, a política a seguir especifica o como 123, que corresponde ao que está na mensagem de erro:

    <?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. Examine o tipo do elemento <Variable> correspondente ao <XPath> identificado na etapa 2 acima. Se o tipo <Variable> for nodeset, essa é a causa do erro.

    A expressão <XPath> é 123 no exemplo da política de variáveis de extração.

    <XPath>123</XPath>
    

    A expressão 123 não pode ser convertida em nodeset. Portanto, a implantação do proxy de API falha.

Resolução

As expressões <XPath> usadas na política de variáveis de extração podem ser convertidas em nodeset se o tipo <Variable> estiver definido como nodeset. Por exemplo:

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

Mensagem de erro

A implantação do proxy de API pela interface ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Causa

Se a definição do elemento <Pattern> for inválida em qualquer um dos elementos como URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload na política de extração de variáveis, a implantação do proxy de API falhará.

Diagnóstico

  1. Identifique a política com falha de variáveis de extração na mensagem de erro. Por exemplo, no erro a seguir, o nome da política é Extract-Variables-2:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. No XML da política de extração de variáveis com falha, verifique se algum destes elementos está presente e inclua um elemento <Pattern>: URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload.

    Por exemplo, veja um exemplo de política de extração de variáveis com um elemento <Pattern> dentro do 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. Examine a definição de cada um dos elementos <Pattern>. Se houver algum elemento <Pattern> com uma definição inválida, essa é a causa do erro.

    No exemplo de política de extração de variáveis mostrado acima, observe que a definição <Pattern> no elemento <QueryParam> é inválida. Portanto, a implantação do proxy da API falha. Consulte também Sobre a correspondência e a criação de variáveis.

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

Resolução

A definição do elemento <Pattern> nos elementos URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload na política de extração de variáveis é válida. Exemplo:

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

Consulte também Sobre a correspondência e a criação de variáveis

XPathCompilationFailed

Mensagem de erro

Falha na implantação do proxy de API pela interface do Edge ou pela API Edge Management por esta mensagem de erro:

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

Exemplo de mensagem de erro

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 tela de exemplo

Causa

Se o prefixo ou o valor usado no elemento <XPath> não fizer parte de nenhum dos namespaces declarados na política de extração de variáveis, a implantação do proxy de API falhará.

Veja mais informações sobre namespaces, XPath e prefixo em Namespaces XML e como eles afetam o XPath e o GQL.

Diagnóstico

  1. Identifique a política de variáveis de extração em que o erro ocorreu e o caminho que não pôde ser compilado. É possível encontrar os dois itens na mensagem de erro. Por exemplo, no erro a seguir , o nome da política é EV-XML-Age e o 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. No XML da política de extração com falha, verifique se o XPath definido no elemento <XPath> corresponde ao XPath identificado na mensagem de erro (etapa 1 acima). Por exemplo, a política a seguir especifica o como /apigee:Directions/apigee:route/apigee:leg/apigee:name, que corresponde ao que está na mensagem de erro:

    <?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. Analise os elementos <Namespaces> e <XPath> na política de extração de variáveis. Se o <XPath> específico indicado na mensagem de erro usar um prefixo ou valor que não faz parte dos namespaces declarados na política de extração de variáveis, essa é a causa do erro.

    Observe que a <XPath> específica usa o prefixo apigee na política de exemplo de variáveis de extração.

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

    No entanto, o prefixo apigee não está definido em nenhum dos elementos <Namespace>; Portanto, a compilação de <XPath> falha devido a uma falha de implantação.

Resolução

Verifique se todos os namespaces usados nos elementos <XPath> estão declarados na política de variáveis de extração. Por exemplo:

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