Solucionar problemas de errores de implementación de la política de protección de expresiones regulares

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

InvalidRegularExpression

Mensaje de error

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

Error Deploying Revision revision_number 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.

Ejemplo de mensaje de error

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 pantalla de ejemplo de error

Texto de error InvalidRegularExpression

Causa

Si la expresión regular del elemento <Pattern> de la política RegularExpressionProtection no es válida, no se podrá implementar el proxy de API.

Diagnóstico

  1. Identifica el nombre de la política RegularExpressionProtection en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política RegularExpressionProtection es 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. Examina todos los elementos <Pattern> del archivo XML de la política de protección de expresiones regulares que ha fallado. Comprueba si alguno de los elementos <Pattern> tiene una expresión regular no válida. Si alguno de los elementos <Pattern> tiene una expresión regular no válida, esa es la causa del error.

    Por ejemplo, la siguiente política especifica el valor de Pattern> de foo){2}, que se considera una expresión regular no vá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>

    En el ejemplo anterior, falta un paréntesis de apertura en la expresión regular especificada en <Pattern>. Por lo tanto, se considera una expresión regular no válida. Por lo tanto, el despliegue del proxy de API falla.

Resolución

Asegúrate de que cada elemento <Pattern> de la política RegularExpressionProtection contenga una expresión regular válida. Puedes buscar diferentes herramientas de expresiones regulares online u offline para depurar tus expresiones regulares. Para corregir la política de protección de expresiones regulares de ejemplo que se muestra arriba, añade los paréntesis que faltan:

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

Mensaje de error

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

Error Deploying Revision revision_number to environment
RegularExpressionProtection policy_name: Failed to compile xpath xpath_expression. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

Ejemplo de mensaje de error

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 pantalla de ejemplo de error

Texto de error XPathCompilationFailed

Causa

Si el prefijo o el valor utilizado en el elemento <XPath> no forma parte de ninguno de los espacios de nombres declarados en la política RegularExpressionProtection, se producirá un error en la implementación del proxy de API.

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

Diagnóstico

  1. Identifica el nombre de la política RegularExpressionProtection en la que se ha producido el error y la expresión XPath que se ha utilizado. Puedes encontrar ambos elementos en el mensaje de error.

    Por ejemplo, en el siguiente error , el nombre de la política es Regular-Expression-Protection-1 y la expresión XPath es /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. En el archivo XML de la política de protección de expresiones regulares que ha fallado, comprueba que el XPath definido en el elemento Expression coincida con el XPath identificado en el mensaje de error (paso 1 anterior).

    Por ejemplo, la siguiente política especifica el XPath como /notapigee:foo/notapigee:bar, que coincide con lo que aparece en el mensaje de error:

    <?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. Examina los elementos <Namespaces> y <Expression> de la política RegularExpressionProtection. Si el <Expression> específico indicado en el mensaje de error usa un prefijo o un valor que no forma parte de los espacios de nombres declarados en la política RegularExpressionProtection, ese es el motivo del error.

    Ten en cuenta que el <XPath> específico usa el prefijo notapigee en el ejemplo de la política RegularExpressionProtection:

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

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

Resolución

Asegúrate de que todos los espacios de nombres que se usen en los elementos <Expression> de los elementos <XPath> se declaren en la política RegularExpressionProtection. Para corregir el ejemplo anterior, puedes sustituir el prefijo notapigee por apigee, que se declara en los espacios de nombres:

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

Mensaje de error

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

Error Deploying Revision revision_number 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.

Ejemplo de mensaje de error

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 pantalla de ejemplo de error

Texto de error CannotBeConvertedToNodeset

Causa

Si la política de expresiones regulares tiene una expresión <XPath> en la que el elemento <Type> se define como nodeset, pero la expresión no se puede convertir en nodeset, se produce un error al implementar el proxy de API.

Diagnóstico

  1. Identifica la política RegularExpressionProtection en la que se ha producido el error y la expresión XPath que no se puede convertir en un conjunto de nodos. Puedes encontrar ambos elementos en el mensaje de error.

    Por ejemplo, en el siguiente error , el nombre de la política es Regular-Expression-Protection-1 y la expresión XPath es 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. En el archivo XML de la política de protección de expresiones regulares que ha fallado, comprueba que el XPath definido en el elemento <Expression> del elemento <XPath> coincida con el XPath identificado en el mensaje de error (paso 1 anterior).

    Por ejemplo, la siguiente política especifica count(//apigee:foo), que coincide con lo que aparece en el mensaje de error:

    <?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 el valor definido en el elemento <Type> situado debajo del elemento <XPath>. Si el elemento <Type> es nodeset, esa es la causa del error.

    En este ejemplo, la expresión XPath es count(), que no devuelve uno o varios nodos. Por lo tanto, el despliegue del proxy de API falla.

Resolución

Si el elemento <Type> se ha definido como conjunto de nodos, asegúrate de que el resultado del conjunto de elementos <Expression> definido en <XPath> sea uno o varios nodos. También puede cambiar el elemento <Type> por un valor más adecuado en función de su caso práctico.

Para corregir el ejemplo anterior, puedes cambiar el elemento <Expression> por otro valor que pueda devolver nodos:

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

Mensaje de error

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

Error Deploying Revision revision_number to environment
RegularExpressionProtection policy_name: Failed to compile jsonpath jsonpath_expression Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

Ejemplo de mensaje de error

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 pantalla de ejemplo de error

Texto de error JSONPathCompilationFailed

Causa

Si el elemento <Expression> del elemento <JSONPath> de una política de protección de expresiones regulares se define como una expresión JSONPath no válida, no se podrá implementar el proxy de API.

Diagnóstico

  1. Identifica el nombre de la política RegularExpressionProtection en la que se ha producido el error y se ha usado la expresión JSONPath no válida. Puedes encontrar ambos elementos en el mensaje de error.

    Por ejemplo, en el siguiente error , el nombre de la política es Regular-Expression-Protection-1 y la expresión JSONPath es $.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. En el archivo XML de la política de protección de expresiones regulares que ha fallado, compruebe que el JSONPath definido en el elemento Expression coincide con el JSONPath identificado en el mensaje de error (paso 1 anterior).

    Por ejemplo, la siguiente política especifica el elemento Expression en el elemento <JSONPath> como $.store.book[*.author, que coincide con lo que aparece en el mensaje de error:

    <?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. Consulta el elemento <Expression> del elemento <JSONPath> en la política. Si no coincide con la sintaxis de JSONPath, ese es el motivo del error. En el ejemplo anterior, falta el corchete de cierre, lo que hace que la expresión no sea válida.

    Como la expresión de ruta JSON no es válida, no se puede desplegar el proxy de API.

Resolución

Asegúrate de que el valor del elemento <Expression> dentro del elemento <JSONPath> de la política de protección de expresiones regulares sea una expresión JSONPath válida.

Para corregir el ejemplo anterior, puedes añadir el corchete de cierre que falta al valor del 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

Mensaje de error

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

Error Saving Revision revision_number
RegularExpressionProtection policy_name: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Texto de error NothingToEnforce

Causa

Si la política RegularExpressionProtection no tiene ninguno de los elementos <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> o <JSONPayload>, la implementación del proxy de API falla.

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

Diagnóstico

  1. Identifica el nombre de la política RegularExpressionProtection en la que se ha producido el error. Puedes encontrarlo en el mensaje de error. Por ejemplo, en el siguiente error , el nombre de la política es Regular-Expression-Protection-1:.

    RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
  2. Examina la política de protección de expresiones regulares que ha fallado (identificada en el paso 1 anterior). Si la política no tiene al menos uno de los siguientes elementos: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> o <JSONPayload>, esa es la causa del error.

    Por ejemplo, la siguiente política de protección de expresiones regulares no tiene ninguno de los elementos mencionados anteriormente:

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

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

Resolución

Asegúrese de que la política RegularExpressionProtection tenga al menos uno de estos elementos obligatorios: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> o <JSONPayload>. Por ejemplo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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

Mensaje de error

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

Error Saving Revision revision_number
RegularExpressionProtection policy_name: No patterns to enforce in payload_name.

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Texto de error NoPatternsToEnforce

Causa

Si alguno de los elementos de nivel superior (<URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> o <JSONPayload>) no tiene definido el elemento <Pattern> en la política RegularExpressionProtection, se producirá un error al implementar el proxy de API.

Diagnóstico

  1. Identifique el nombre de la política RegularExpressionProtection en la que se ha producido el error y el elemento secundario que no tiene el elemento <Pattern>. Puedes encontrar ambos elementos en el mensaje de error.

    Por ejemplo, en el siguiente error, el nombre de la política es Regular-Expression-Protection-1 y el elemento secundario es XPath:.

    RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
  2. Examina la política de protección de expresiones regulares que ha fallado y comprueba si el elemento secundario identificado en el paso 1 no tiene el elemento <Pattern>. Si el elemento <Pattern> no existe, esa es la causa del error.

    Por ejemplo, la siguiente política no tiene el 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>

    Como el elemento <XPath> no tiene el elemento <Pattern>, la implementación del proxy de API falla.

Resolución

Asegúrate de que al menos uno de los elementos <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> o <JSONPayload> tenga al menos un <Pattern> especificado. Consulta la política RegularExpressionProtection para obtener información sobre cómo especificar el elemento correctamente.

Para corregir el ejemplo anterior, solo tenemos que añadir el elemento <Pattern> al elemento <XPath> debajo 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

Mensaje de error

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

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Texto de error NONEmptyPrefixMappedToEmptyURI

Causa

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

Diagnóstico

  1. Identifique la política RegularExpressionProtection en la que se ha producido el error y el nombre del prefijo que no se ha asignado al URI. Puedes encontrar ambos elementos en el mensaje de error.

    Por ejemplo, en el siguiente error, el nombre de la política es Regular Expression Protection-1 y el prefijo es apigee:

    RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
  2. En el archivo XML de la política de protección de expresiones regulares que ha fallado, compruebe que el nombre del prefijo definido en el elemento <Namespace> del elemento <XMLPayload> coincide con el nombre del prefijo identificado en el mensaje de error (paso 1 anterior).

    Por ejemplo, la siguiente política especifica un prefijo llamado apigee en el elemento <Namespace> , que coincide con lo que se indica en el mensaje de error:

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

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

    Non-empty prefix apigee cannot be mapped to empty uri.

Resolución

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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

Mensaje de error

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

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Duplicate prefix prefix_name.

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Texto de error DuplicatePrefix

Causa

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

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

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

Diagnóstico

  1. Identifica la política RegularExpressionProtection en la que se ha producido el error y el nombre del prefijo. Puedes encontrar ambos elementos en el mensaje de error.

    Por ejemplo, en el siguiente error, el nombre de la política es Regular Expression Protection-1 y el prefijo es apigee:

    RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
  2. En el archivo XML de la política de protección de expresiones regulares que ha fallado, compruebe que el nombre del prefijo definido en el elemento <Namespace> del elemento <XMLPayload> coincide con el nombre del prefijo identificado en el mensaje de error (paso 1 anterior).

    Por ejemplo, la siguiente política especifica un prefijo llamado apigee en el elemento <Namespace> , que coincide con lo que se indica en el mensaje de error:

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

    En la política de protección de expresiones regulares de ejemplo que se muestra arriba, observe que el elemento <Namespace> con el prefijo apigee se ha definido dos veces. Por lo tanto, se produce el siguiente error:

    Duplicate prefix apigee.

Resolución

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

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

Mensaje de error

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

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty XPath expression.

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Texto de error EmptyXPathExpression

Causa

Si la política RegularExpressionProtection no tiene ningún elemento <Expression> definido en el elemento <XPath>, la implementación del proxy de API fallará.

Diagnóstico

  1. Identifica la política de protección de expresiones regulares que ha fallado a partir del mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Regular-Expression-Protection-1:

    RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
  2. En el archivo XML de la política de protección de expresiones regulares que ha fallado, determina si hay un elemento <XMLPayload> con un elemento secundario <XPath> que no tenga ningún elemento <Expression> definido o si el elemento <Expression> no tiene ningún valor asignado. Si es así, esa es la causa del error.

    Por ejemplo, a continuación se muestra una política de protección de expresiones regulares que tiene un 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>

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

Resolución

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

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

Mensaje de error

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

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty JSONPath expression.

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo de error

Texto de error de EmptyJSONPathExpression

Causa

Si la política RegularExpressionProtection no tiene ningún elemento <Expression> definido en el elemento <JSONPath>, la implementación del proxy de API fallará.

Diagnóstico

  1. Identifica la política de protección de expresiones regulares que ha fallado a partir del mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Regular-Expression-Protection-1:

    Error Saving Revision 1
    RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
  2. En el archivo XML de la política de protección de expresiones regulares que ha fallado, determina si hay un elemento <JSONPayload> con un elemento secundario <JSONPath> que no tenga ningún elemento <Expression> definido o si el elemento <Expression> no tiene ningún valor asignado. Si es así, esa es la causa del error.

    Por ejemplo, a continuación se muestra una política de protección de expresiones regulares que tiene un 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>

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

Resolución

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

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