Resolução de problemas de erros de implementação da política Extract Variables

Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do Apigee Edge.

NothingToExtract

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee 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].

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 2.

Causa

Se a política Extract Variables não tiver nenhum dos elementos URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload, a implementação do proxy de API falha, porque não existe nada para extrair.

Conforme indicado na mensagem de erro, a política Extract Variables tem de ter, pelo menos, um destes elementos incluídos na política: URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload.

Diagnóstico

Examine a política Extract Variables (Extrair variáveis) mencionada na mensagem de erro. Se a política não tiver, pelo menos, um dos seguintes elementos: URIPath, QueryParam, Header, FormParam, XMLPayload ou JSONPayload, essa é a causa do erro. Por exemplo, a seguinte política Extract Variables 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>

Uma vez que nenhum dos elementos obrigatórios está presente na política Extract Variables, a implementação do proxy de API falha.

Resolução

Certifique-se de que a política Extract Variables tem, pelo menos, um destes elementos obrigatórios: URIPath, QueryParam, Header, FormParam, XMLPayload e 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 implementação do proxy de API através da IU ou da API Apigee 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.

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 3.

Causa

Este erro ocorre se a política Extract Variables tiver um prefixo definido no elemento <Namespace> no elemento <XMLPayload>, mas não estiver definido nenhum URI.

Diagnóstico

  1. Identifique a política Extract Variables onde ocorreu o erro e o nome do prefixo. Pode encontrar ambos os itens na mensagem de erro. Por exemplo, no seguinte erro , 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 da política Extract Variables 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 (passo n.º 1 acima). Por exemplo, a política seguinte especifica um prefixo denominado 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 no passo n.º 2 tem um URI válido. Se o URI estiver em falta, essa é a causa do erro.

    No exemplo da política Extract Variables apresentado acima, repare que não existe nenhum URI correspondente ao elemento <Namespace> com o prefixo apigee. Por conseguinte, recebe o seguinte erro:

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

Resolução

Certifique-se de que todos os elementos <Namespace> definidos com um prefixo têm um URI correspondente na política Extrair variáveis. 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 implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 2.

Causa

Este erro ocorre se a política Extract Variables tiver o mesmo prefixo definido mais do que uma vez no elemento <Namespace> no elemento <XMLPayload>.

Por exemplo, este erro ocorre porque o prefixo apigee está 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 Extract Variables onde ocorreu o erro e o nome do prefixo. Pode encontrar ambos os itens na mensagem de erro. Por exemplo, no seguinte erro, o nome da política é EV-XML-Age e o prefixo é apigee:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. No XML da política Extract Variables 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 (passo n.º 1 acima). Por exemplo, a política seguinte especifica um prefixo denominado 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 no passo n.º 2, foi definido mais do que uma vez. Se estiver definido mais do que uma vez, essa é a causa do erro.

    No exemplo da política Extract Variables apresentado acima, repare que o elemento <Namespace> com o prefixo apigee foi definido duas vezes. Por conseguinte, recebe o seguinte erro:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

Resolução

Certifique-se de que existe apenas uma definição para cada prefixo nos elementos <Namespace> na política Extrair variáveis. 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 implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 4.

Causa

Se a política Extract Variables não tiver o elemento <XPath> no elemento <XMLPayload>, a implementação do proxy de API falha com o erro apresentado acima.

Diagnóstico

  1. Identifique a política Extract Variables com falha na mensagem de erro. Por exemplo, no seguinte erro, 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 Extract Variables com falha, verifique se existe um elemento <XMLPayload> sem o elemento secundário <XPath>. Se for o caso, essa é a causa do erro.

    Por exemplo, segue-se uma política Extract Variables 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>
    

    Uma vez que não existe nenhum elemento <XPath>, a implementação do proxy de API falha.

Resolução

Certifique-se de que a política Extract Variables 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 implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 6.

Causa

Se a política Extract Variables tiver uma expressão <XPath> vazia no elemento <XMLPayload>, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política Extract Variables com falha na mensagem de erro. Por exemplo, no seguinte erro, 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 Extract Variables com falha, determine se existe um elemento <XMLPayload> com um elemento secundário <XPath> vazio. Se for o caso, essa é a causa do erro.

    Por exemplo, segue-se uma política Extract Variables 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>
    

    Uma vez que existe um elemento <XPath> vazio no elemento <XMLPayload>, a implementação do proxy de API falha.

Resolução

Certifique-se de que a política Extract Variables 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 implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 6.

Causa

Se a política Extract Variables não tiver o elemento <JSONPath> no elemento <JSONPayload>, a implementação do proxy de API falha com o erro apresentado acima.

Diagnóstico

  1. Identifique a política Extract Variables com falha na mensagem de erro. Por exemplo, no seguinte erro, 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 Extract Variables com falha, determine se existe um elemento <JSONPayload> sem o elemento secundário <JSONPath> obrigatório. Se for o caso, essa é a causa do erro.

    Por exemplo, segue-se uma política Extract Variables 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>
    

    Uma vez que não existe um elemento subordinado <JSONPath> definido no elemento <JSONPayload>, a implementação do proxy de API falha.

Resolução

Certifique-se de que a política Extract Variables 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 implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 6.

Causa

Se a política Extract Variables tiver uma expressão <JSONPath> vazia no elemento <JSONPayload>, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política Extract Variables com falha na mensagem de erro. Por exemplo, no seguinte erro, 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 Extract Variables com falha, verifique se existe um elemento <JSONPayload> com um elemento secundário <JSONPath> vazio. Se for o caso, essa é a causa do erro.

    Por exemplo, segue-se uma política Extract Variables 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>
    

    Uma vez que existe um elemento <JSONPath> vazio no elemento <JSONPayload>, a implementação do proxy de API falha.

Resolução

Certifique-se de que a política Extract Variables 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 implementação do proxy de API através da IU ou da API Apigee 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]

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 6.

Causa

Se a política Extract Variables não tiver o atributo name em nenhum dos elementos da política, como QueryParam, Header, FormParam ou Variable, onde é necessário, a implementação do proxy de API falha.

Por exemplo, este erro ocorre se o atributo name estiver em falta num elemento Variable.

Diagnóstico

  1. Identifique o nome da política Extract Variables onde ocorreu o erro e o elemento onde o atributo name está em falta. Pode encontrar estes itens na mensagem de erro. Por exemplo, no seguinte erro, 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 Extract Variables com falha, verifique se todos os elementos com o nome determinado no passo n.º 1 acima têm um atributo name. Se existir algum elemento em que o atributo name esteja em falta, essa é a causa do erro.

    Por exemplo, a seguinte política Extract Variables 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>
    

    Repare que o atributo name está em falta no elemento Variable, pelo que a implementação do proxy de API falha.

Resolução

Certifique-se de que a política Extract Variables contém o atributo name necessá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 implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 7.

Causa

Se a política Extract Variables não tiver uma variável especificada no elemento <Pattern>, a implementação do proxy de API falha. O elemento <Pattern> requer o nome da variável na qual os dados extraídos vão ser armazenados.

Diagnóstico

  1. Identifique o nome da política Extract Variables onde ocorreu o erro e o padrão para o qual a variável está em falta. Pode encontrar estes itens na mensagem de erro. Por exemplo, no seguinte erro, 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 Extract Variables com falha, verifique se o padrão definido no elemento <Pattern> corresponde ao padrão identificado na mensagem de erro (passo n.º 1 acima). Por exemplo, a seguinte política especifica um padrão /a/b, que corresponde ao que está na mensagem de erro:

    Por exemplo, segue-se uma política de extração de variáveis 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 no passo n.º 2 não tem uma variável. As variáveis têm de estar entre chavetas. Se o padrão não tiver uma variável, então essa é a causa do erro.

    O elemento <Pattern> com o padrão /a/b não inclui uma variável. Por conseguinte, a implementação do proxy de API falha

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

Resolução

Certifique-se de que todos os elementos <Pattern> incluem uma variável (um nome entre chavetas). 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 implementação do proxy de API através da IU ou da API Apigee 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].

Mensagem de erro de exemplo

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 ecrã de exemplo

Erro ao implementar a revisão 4 para teste.

Causa

Se a política Extract Variables tiver uma expressão <XPath> em que o tipo <Variable> esteja definido como nodeset, mas a expressão não puder ser convertida em nodeset, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política Extract Variables onde ocorreu o erro e o XPath que não pode ser convertido em nodeset. Pode encontrar ambos os itens na mensagem de erro. Por exemplo, no seguinte erro , 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 Extract Variables com falha, verifique se o XPath definido no elemento <XPath> corresponde ao XPath identificado na mensagem de erro (passo n.º 1 acima). Por exemplo, a seguinte política especifica o como 123, o 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 no passo n.º 2 acima. Se o tipo <Variable> for nodeset, essa é a causa do erro.

    Tenha em atenção que a expressão <XPath> é 123 no exemplo da política Extract Variables.

    <XPath>123</XPath>
    

    Não é possível converter a expressão 123 num conjunto de nós. Assim, a implementação do proxy de API falha.

Resolução

Certifique-se de que as expressões <XPath> usadas na política Extract Variables podem ser convertidas em nodeset se o tipo <Variable> for 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 implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Erro ao implementar a revisão 18 para teste.

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 Extract Variables, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política Extract Variables com falhas na mensagem de erro. Por exemplo, no seguinte erro, o nome da política é Extract-Variables-2:

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

    Por exemplo, segue-se uma política Extract Variables com um elemento <Pattern> dentro de um 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 existir algum elemento <Pattern> com uma definição inválida, essa é a causa do erro.

    No exemplo da política Extract Variables apresentado acima, repare que a definição <Pattern> no elemento <QueryParam> é inválida. Por conseguinte, a implementação do proxy de API falha. Veja também Acerca da correspondência e da criação de variáveis

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

Resolução

Certifique-se de que 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. Por 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>

Veja também Acerca da correspondência e da criação de variáveis

XPathCompilationFailed

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com 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].

Mensagem de erro de exemplo

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 ecrã de exemplo

Erro ao implementar a revisão 1 para teste.

Causa

Se o prefixo ou o valor usado no elemento <XPath> não fizer parte de nenhum dos espaços de nomes declarados na política Extract Variables, a implementação do proxy de API falha.

Pode encontrar mais informações sobre espaços de nomes, XPath e prefixos em XML Namespaces and How They Affect XPath and XSLT.

Diagnóstico

  1. Identifique a política Extract Variables onde ocorreu o erro e o XPath que não foi possível compilar. Pode encontrar ambos os itens na mensagem de erro. Por exemplo, no seguinte erro , 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 Extract Variables com falha, verifique se o XPath definido no elemento <XPath> corresponde ao XPath identificado na mensagem de erro (passo n.º 1 acima). Por exemplo, a seguinte política especifica o como /apigee:Directions/apigee:route/apigee:leg/apigee:name, o 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. Examine os elementos <Namespaces> e <XPath> na política Extrair variáveis. Se o <XPath> específico indicado na mensagem de erro usar um prefixo ou um valor que não faça parte dos espaços de nomes declarados na política Extract Variables, essa é a causa do erro.

    Tenha em atenção que o <XPath> específico usa o prefixo apigee no exemplo da política Extrair variáveis.

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

    No entanto, o prefixo apigee não está definido em nenhum dos elementos <Namespace>. Por conseguinte, a compilação de <XPath> falha, o que leva a uma falha na implementação.

Resolução

Certifique-se de que todos os espaços de nomes que estão a ser usados nos elementos <XPath> são declarados na política Extract Variables. 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>