Resolução de problemas de erros de implementação da política de proteção de expressões regulares

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

InvalidRegularExpression

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 to environment
RegularExpressionProtection policy_name: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

Exemplo de mensagem de erro

Error Deploying Revision 1 to test
RegularExpressionProtection Regular-Expression-Protection-1: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.

Captura de ecrã de erro de exemplo

Texto do erro InvalidRegularExpression

Causa

Se a expressão regular no elemento <Pattern> da política RegularExpressionProtection não for válida, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique o nome da política RegularExpressionProtection na mensagem de erro. Por exemplo, no erro seguinte, o nome da política RegularExpressionProtection é Regular-Expression-Protection-1:

    Error Deploying Revision 1 to test
    RegularExpressionProtection Regular-Expression-Protection-1: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
  2. Examine todos os elementos <Pattern> no XML da política de proteção de expressões regulares com falhas. Verifique se algum dos elementos <Pattern> tem uma expressão regular inválida. Se algum dos elementos <Pattern> tiver uma expressão regular inválida, essa é a causa do erro.

    Por exemplo, a seguinte política especifica o valor de Pattern> de foo){2}, que é considerado uma expressão regular inválida:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
            <DisplayName>Regular Expression Protection-1</DisplayName>
            <Properties/>
            <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
            <URIPath>
                <Pattern>foo){2}</Pattern>
            </URIPath>
            <Source>request</Source>
        </RegularExpressionProtection>

    No exemplo acima, a expressão regular especificada no elemento <Pattern> tem um parênteses de abertura em falta. Por conseguinte, é considerada uma expressão regular inválida. Assim, a implementação do proxy de API falha.

Resolução

Certifique-se de que cada elemento <Pattern> na política RegularExpressionProtection contém uma expressão regular válida. Pode pesquisar diferentes ferramentas de regex online ou offline para depurar as suas expressões regulares. Para corrigir a política de proteção de expressões regulares de exemplo apresentada acima, adicione os parênteses em falta:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
        <DisplayName>Regular Expression Protection-1</DisplayName>
        <Properties/>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <URIPath>
            <Pattern>(foo){2}</Pattern>
        </URIPath>
        <Source>request</Source>
    </RegularExpressionProtection>

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 to environment
RegularExpressionProtection policy_name: Failed to compile xpath xpath_expression. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

Exemplo de mensagem de erro

Error Deploying Revision 1 to test
RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile xpath /notapigee:foo/notapigee:bar. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.

Captura de ecrã de erro de exemplo

Texto de erro XPathCompilationFailed

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 RegularExpressionProtection, 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 o nome da política RegularExpressionProtection onde ocorreu o erro e a expressão XPath que foi usada. Pode encontrar ambos os itens na mensagem de erro.

    Por exemplo, no erro seguinte , o nome da política é Regular-Expression-Protection-1 e a expressão XPath é /notapigee:foo/notapigee:bar:

    Error Deploying Revision 1 to test
    RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile xpath /notapigee:foo/notapigee:bar. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
  2. No XML da política de proteção de expressões regulares com falhas, verifique se o XPath definido no elemento Expression corresponde ao XPath identificado na mensagem de erro (passo n.º 1 acima).

    Por exemplo, a política seguinte especifica o XPath como /notapigee:foo/notapigee:bar, que corresponde ao que está na mensagem de erro:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
        <DisplayName>Regular Expression Protection-1</DisplayName>
        <Properties/>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Source>request</Source>
         <XMLPayload>
             <Namespaces>
                 <Namespace prefix="apigee">http://www.apigee.com</Namespace>
             </Namespaces>
             <XPath>
                 <Expression>/notapigee:foo/notapigee:bar</Expression>
                 <Type>nodeset</Type>
                 <Pattern>pattern</Pattern>
                 <Pattern>pattern2</Pattern>
             </XPath>
         </XMLPayload>
    </RegularExpressionProtection>
  3. Examine os elementos <Namespaces> e <Expression> na política RegularExpressionProtection. Se o <Expression> 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 RegularExpressionProtection, essa é a causa do erro.

    Tenha em atenção que o <XPath> específico usa o prefixo notapigee no exemplo da política de proteção de expressões regulares:

    <Expression>/notapigee:foo/notapigee:bar</Expression>

    No entanto, o prefixo notapigee 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 em elementos <Expression> nos elementos <XPath> são declarados na política de proteção de expressões regulares. Para corrigir o exemplo acima, pode substituir o prefixo notapigee por apigee, que é declarado nos espaços de nomes:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
    <DisplayName>Regular Expression Protection-1</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>request</Source>
     <XMLPayload>
         <Namespaces>
             <Namespace prefix="apigee">http://www.apigee.com</Namespace>
         </Namespaces>
         <XPath>
             <Expression>/apigee:foo/apigee:bar</Expression>
             <Type>nodeset</Type>
             <Pattern>pattern</Pattern>
             <Pattern>pattern2</Pattern>
         </XPath>
     </XMLPayload>
</RegularExpressionProtection>

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 to environment
RegularExpressionProtection policy_name: Result of xpath xpath_expression cannot be converted to nodeset. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

Exemplo de mensagem de erro

Error Deploying Revision 1 to test
RegularExpressionProtection Regular-Expression-Protection-1: Result of xpath count(//apigee:foo) cannot be converted to nodeset. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.

Captura de ecrã de erro de exemplo

Texto de erro CannotBeConvertedToNodeset

Causa

Se a política de expressões regulares tiver uma expressão <XPath> em que o elemento <Type> 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 RegularExpressionProtection onde ocorreu o erro e a expressão XPath que não pode ser convertida em nodeset. Pode encontrar ambos os itens na mensagem de erro.

    Por exemplo, no erro seguinte , o nome da política é Regular-Expression-Protection-1 e a expressão XPath é count(//apigee:foo):

    Error Deploying Revision 1 to test
    RegularExpressionProtection Regular-Expression-Protection-1: Result of xpath count(//apigee:foo) cannot be converted to nodeset. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
  2. No XML da política de proteção de expressões regulares com falhas, verifique se o XPath definido no elemento <Expression> do elemento <XPath> corresponde ao XPath identificado na mensagem de erro (passo n.º 1 acima).

    Por exemplo, a seguinte política especifica o valor count(//apigee:foo), que corresponde ao que está na mensagem de erro:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
            <DisplayName>Regular Expression Protection-1</DisplayName>
            <Properties/>
            <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
            <Source>request</Source>
             <XMLPayload>
                 <Namespaces>
                     <Namespace prefix="apigee">http://www.apigee.com</Namespace>
                 </Namespaces>
                 <XPath>
                     <Expression>count(//apigee:foo)</Expression>
                     <Type>nodeset</Type>
                     <Pattern>pattern</Pattern>
                     <Pattern>pattern2</Pattern>
                 </XPath>
             </XMLPayload>
        </RegularExpressionProtection>
  3. Examine o valor definido no elemento <Type> abaixo do elemento <XPath>. Se o elemento <Type> for nodeset, essa é a causa do erro.

    Neste exemplo, a expressão XPath é count(), que não devolve um ou mais nós. Assim, a implementação do proxy de API falha.

Resolução

Se o elemento <Type> estiver definido como nodeset, certifique-se de que o resultado do elemento <Expression> definido em <XPath> é um ou mais nós. Em alternativa, altere o elemento <Type> para um valor mais adequado com base no seu exemplo de utilização.

Para corrigir o exemplo acima, pode alterar o elemento <Expression> para um valor diferente que possa devolver nós:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
    <DisplayName>Regular Expression Protection-1</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>request</Source>
     <XMLPayload>
         <Namespaces>
             <Namespace prefix="apigee">http://www.apigee.com</Namespace>
         </Namespaces>
         <XPath>
             <Expression>/apigee:foo/apigee:bar</Expression>
             <Type>nodeset</Type>
             <Pattern>pattern</Pattern>
             <Pattern>pattern2</Pattern>
         </XPath>
     </XMLPayload>
</RegularExpressionProtection>

JSONPathCompilationFailed

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 to environment
RegularExpressionProtection policy_name: Failed to compile jsonpath jsonpath_expression Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

Exemplo de mensagem de erro

Error Deploying Revision 1 to test
RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile jsonpath $.store.book[*.author. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.

Captura de ecrã de erro de exemplo

Texto do erro JSONPathCompilationFailed

Causa

Se o elemento <Expression> no elemento <JSONPath> de uma política de proteção de expressões regulares estiver definido como uma expressão JSONPath inválida, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique o nome da política RegularExpressionProtection onde ocorreu o erro e a expressão JSONPath inválida foi usada. Pode encontrar ambos os itens na mensagem de erro.

    Por exemplo, no seguinte erro , o nome da política é Regular-Expression-Protection-1 e a expressão JSONPath é $.store.book[*.author:

    Error Deploying Revision 1 to test
    RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile jsonpath $.store.book[*.author. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
  2. No XML da política de proteção de expressões regulares com falha, verifique se o JSONPath definido no elemento Expression corresponde ao JSONPath identificado na mensagem de erro (passo n.º 1 acima).

    Por exemplo, a política seguinte especifica o elemento Expression no elemento <JSONPath> como $.store.book[*.author, o que corresponde ao que está na mensagem de erro:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
            <DisplayName>Regular Expression Protection-1</DisplayName>
            <Properties/>
            <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
            <Source>request</Source>
            <JSONPayload>
                 <JSONPath>
                     <Expression>$.store.book[*.author</Expression>
                     <Pattern>REGEX PATTERN</Pattern>
                     <Pattern>REGEX PATTERN</Pattern>
                 </JSONPath>
                </JSONPayload>
        </RegularExpressionProtection>
  3. Examine o elemento <Expression> no elemento <JSONPath> na política. Se não corresponder à sintaxe JSONPath, esta é a causa do erro. No exemplo acima, o parênteses retos de fecho está em falta, o que torna a expressão inválida.

    Uma vez que a expressão do caminho JSON é inválida, a implementação do proxy de API falha.

Resolução

Certifique-se de que o valor do elemento <Expression> no elemento <JSONPath> na política de proteção de expressões regulares é uma expressão JSONPath válida.

Para corrigir o exemplo apresentado acima, pode adicionar o parênteses retos de fecho em falta ao valor do elemento <Expression>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
    <DisplayName>Regular Expression Protection-1</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>request</Source>
    <JSONPayload>
         <JSONPath>
             <Expression>$.store.book[*].author</Expression>
             <Pattern>REGEX PATTERN</Pattern>
             <Pattern>REGEX PATTERN</Pattern>
         </JSONPath>
        </JSONPayload>
</RegularExpressionProtection>

NothingToEnforce

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
RegularExpressionProtection policy_name: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

Exemplo de mensagem de erro

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

Captura de ecrã de erro de exemplo

Texto do erro NothingToEnforce

Causa

Se a política RegularExpressionProtection não tiver nenhum dos elementos <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> ou <JSONPayload>, a implementação do proxy de API falha.

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

Diagnóstico

  1. Identifique o nome da política RegularExpressionProtection onde ocorreu o erro. Pode encontrá-lo na mensagem de erro. Por exemplo, no seguinte erro , o nome da política é Regular-Expression-Protection-1:

    RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
  2. Examine a política de proteção de expressões regulares com falhas (identificada no passo n.º 1 acima). 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 de proteção de expressões regulares não tem nenhum dos elementos mencionados acima:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
            <DisplayName>Regular Expression Protection-1</DisplayName>
            <Properties/>
            <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
            <Source>request</Source>
        </RegularExpressionProtection>

    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 RegularExpressionProtection tem, pelo menos, um destes elementos obrigatórios: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> ou <JSONPayload>. Por exemplo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
    <DisplayName>Regular Expression Protection-1</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>request</Source>
    <JSONPayload>
        <JSONPath>
            <Expression>$.store.book[*].author</Expression>
            <Pattern>REGEX PATTERN</Pattern>
            <Pattern>REGEX PATTERN</Pattern>
        </JSONPath>
    </JSONPayload>
</RegularExpressionProtection>

NoPatternsToEnforce

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
RegularExpressionProtection policy_name: No patterns to enforce in payload_name.

Exemplo de mensagem de erro

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.

Captura de ecrã de erro de exemplo

Texto do erro NoPatternsToEnforce

Causa

Se algum dos elementos de nível superior (<URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> ou <JSONPayload>) não tiver o elemento <Pattern> definido na política RegularExpressionProtection, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique o nome da política RegularExpressionProtection onde ocorreu o erro e o elemento subordinado que não tem o elemento <Pattern>. Pode encontrar ambos os itens na mensagem de erro.

    Por exemplo, no seguinte erro, o nome da política é Regular-Expression-Protection-1 e o elemento filho é XPath:

    RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
  2. Examine a política de proteção de expressões regulares com falhas e verifique se o elemento subordinado identificado no passo n.º 1 não tem o elemento <Pattern>. Se o elemento <Pattern> não existir, essa é a causa do erro.

    Por exemplo, a seguinte política não tem o elemento <Pattern> dentro de <XPath>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
          <DisplayName>Regular Expression Protection-1</DisplayName>
          <Properties/>
          <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
          <Source>request</Source>
          <XMLPayload>
            <Namespaces>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
            </Namespaces>
            <XPath>
              <Expression>/apigee:Greeting/apigee:User</Expression>
              <Type>string</Type>
            </XPath>
          </XMLPayload>
        </RegularExpressionProtection>

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

Resolução

Certifique-se de que qualquer um dos elementos <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> ou <JSONPayload> tem, pelo menos, um <Pattern> especificado. Consulte a Política de Proteção de Expressões Regulares para ver informações sobre como especificar o elemento corretamente.

Para corrigir o exemplo acima, podemos simplesmente adicionar o elemento <Pattern> ao elemento <XPath> abaixo de <XMLPayload>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
  <DisplayName>Regular Expression Protection-1</DisplayName>
  <Properties/>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces>
      <Namespace prefix="apigee">http://www.apigee.com</Namespace>
    </Namespaces>
    <XPath>
      <Expression>/apigee:Greeting/apigee:User</Expression>
      <Type>string</Type>
      <Pattern>REGEX PATTERN</Pattern>
    </XPath>
  </XMLPayload>
</RegularExpressionProtection>

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
RegularExpressionProtection policy_name: Non-empty prefix prefix_name cannot be mapped to empty uri.

Exemplo de mensagem de erro

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.

Captura de ecrã de erro de exemplo

Texto do erro NONEmptyPrefixMappedToEmptyURI

Causa

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

Diagnóstico

  1. Identifique a política RegularExpressionProtection onde ocorreu o erro e o nome do prefixo que não está mapeado para o URI. Pode encontrar ambos os itens na mensagem de erro.

    Por exemplo, no seguinte erro, o nome da política é Regular Expression Protection-1 e o prefixo é apigee:

    RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
  2. No XML da política de proteção de expressões regulares com falha, verifique se o nome do conjunto de prefixos 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"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
          <DisplayName>Regular Expression Protection-1</DisplayName>
          <Properties/>
          <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
          <Source>request</Source>
          <XMLPayload>
            <Namespaces>
              <Namespace prefix="apigee"/>
              <Namespace prefix="gmail">http://mail.google.com</Namespace>
            </Namespaces>
            <XPath>
              <Expression>/apigee:Greeting/apigee:User</Expression>
              <Type>string</Type>
              <Pattern>REGEX PATTERN</Pattern>
            </XPath>
          </XMLPayload>
        </RegularExpressionProtection>
  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 de proteção de expressões regulares apresentado acima, repare que não existe nenhum URI correspondente ao elemento <Namespace> com o prefixo apigee. Por conseguinte, recebe o seguinte erro:

    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"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
  <DisplayName>Regular Expression Protection-1</DisplayName>
  <Properties/>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces>
      <Namespace prefix="apigee">http://www.apigee.com</Namespace>
      <Namespace prefix="gmail">http://mail.google.com</Namespace>
    </Namespaces>
    <XPath>
      <Expression>/apigee:Greeting/apigee:User</Expression>
      <Type>string</Type>
      <Pattern>REGEX PATTERN</Pattern>
    </XPath>
  </XMLPayload>
</RegularExpressionProtection>

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
RegularExpressionProtection policy_name: Duplicate prefix prefix_name.

Exemplo de mensagem de erro

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.

Captura de ecrã de erro de exemplo

Texto do erro DuplicatePrefix

Causa

Este erro ocorre se a política RegularExpressionProtection 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 RegularExpressionProtection 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 é Regular Expression Protection-1 e o prefixo é apigee:

    RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
  2. No XML da política de proteção de expressões regulares com falha, verifique se o nome do conjunto de prefixos 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"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
          <DisplayName>Regular Expression Protection-1</DisplayName>
          <Properties/>
          <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
          <Source>request</Source>
          <XMLPayload>
            <Namespaces>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
            </Namespaces>
            <XPath>
              <Expression>/apigee:Greeting/apigee:User</Expression>
              <Type>string</Type>
              <Pattern>REGEX PATTERN</Pattern>
            </XPath>
          </XMLPayload>
        </RegularExpressionProtection>
  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.

    Na política de proteção de expressões regulares de exemplo apresentada acima, repare que o elemento <Namespace> com o prefixo apigee foi definido duas vezes. Por conseguinte, recebe o erro:

    Duplicate prefix apigee.

Resolução

Certifique-se de que existe apenas uma definição para cada prefixo nos elementos <Namespace> na política RegularExpressionProtection. Por exemplo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
      <DisplayName>Regular Expression Protection-1</DisplayName>
      <Properties/>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <Source>request</Source>
      <XMLPayload>
        <Namespaces>
          <Namespace prefix="apigee">http://www.apigee.com</Namespace>
        </Namespaces>
        <XPath>
          <Expression>/apigee:Greeting/apigee:User</Expression>
          <Type>string</Type>
          <Pattern>REGEX PATTERN</Pattern>
        </XPath>
      </XMLPayload>
    </RegularExpressionProtection>

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
RegularExpressionProtection policy_name: Empty XPath expression.

Exemplo de mensagem de erro

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.

Captura de ecrã de erro de exemplo

Texto do erro EmptyXPathExpression

Causa

Se a política RegularExpressionProtection não tiver nenhum elemento <Expression> definido no elemento <XPath>, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política de proteção de expressões regulares com falhas a partir da mensagem de erro. Por exemplo, no seguinte erro, o nome da política é Regular-Expression-Protection-1:

    RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
  2. No XML da política de proteção de expressões regulares com falhas, determine se existe um elemento <XMLPayload> com um elemento secundário <XPath> que não tenha um elemento <Expression> definido ou se o elemento <Expression> não está definido para nenhum valor. Se for o caso, essa é a causa do erro.

    Por exemplo, segue-se uma política de proteção de expressões regulares que tem um elemento <XMLPayload>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
      <DisplayName>Regular Expression Protection-1</DisplayName>
      <Properties/>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <Source>request</Source>
      <XMLPayload>
        <Namespaces>
          <Namespace prefix="apigee">http://www.apigee.com</Namespace>
        </Namespaces>
        <XPath>
          <Expression></Expression>
          <Type>string</Type>
          <Pattern>REGEX PATTERN</Pattern>
        </XPath>
      </XMLPayload>
    </RegularExpressionProtection>

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

Resolução

Certifique-se de que a política RegularExpressionProtection tem um elemento <Expression> não vazio e válido definido no elemento <XPath>. Por exemplo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
  <DisplayName>Regular Expression Protection-1</DisplayName>
  <Properties/>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces>
      <Namespace prefix="apigee">http://www.apigee.com</Namespace>
    </Namespaces>
    <XPath>
      <Expression>/apigee:Greeting/apigee:User</Expression>
      <Type>string</Type>
      <Pattern>REGEX PATTERN</Pattern>
    </XPath>
  </XMLPayload>
</RegularExpressionProtection>

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
RegularExpressionProtection policy_name: Empty JSONPath expression.

Exemplo de mensagem de erro

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.

Captura de ecrã de erro de exemplo

Texto de erro EmptyJSONPathExpression

Causa

Se a política RegularExpressionProtection não tiver nenhum elemento <Expression> definido no elemento <JSONPath>, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política de proteção de expressões regulares com falhas a partir da mensagem de erro. Por exemplo, no seguinte erro, o nome da política é Regular-Expression-Protection-1:

    Error Saving Revision 1
    RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
  2. No XML da política de proteção de expressões regulares com falhas, determine se existe um elemento <JSONPayload> com um elemento secundário <JSONPath> que não tenha um elemento <Expression> definido ou se o elemento <Expression> não está definido para nenhum valor. Se for o caso, essa é a causa do erro.

    Por exemplo, segue-se uma política de proteção de expressões regulares que tem um elemento <JSONPayload>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
          <DisplayName>Regular Expression Protection-1</DisplayName>
          <Properties/>
          <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
          <Source>request</Source>
          <JSONPayload>
            <JSONPath>
              <Expression></Expression>
              <Pattern>REGEX PATTERN</Pattern>
              <Pattern>REGEX PATTERN</Pattern>
            </JSONPath>
          </JSONPayload>
        </RegularExpressionProtection>

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

Resolução

Certifique-se de que a política RegularExpressionProtection tem um elemento <Expression> não vazio e válido definido no elemento <JSONPath>. Por exemplo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
  <DisplayName>Regular Expression Protection-1</DisplayName>
  <Properties/>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Source>request</Source>
  <JSONPayload>
    <JSONPath>
      <Expression>$.store.book[*].author</Expression>
      <Pattern>REGEX PATTERN</Pattern>
      <Pattern>REGEX PATTERN</Pattern>
    </JSONPath>
  </JSONPayload>
</RegularExpressionProtection>