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
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
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.
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>
defoo){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
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
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.
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>
- 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 prefijonotapigee
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
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
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 escount(//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.
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>
Examine el valor definido en el elemento
<Type>
situado debajo del elemento<XPath>
. Si el elemento<Type>
esnodeset
, 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
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
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.
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>
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
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
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.
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
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
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 esXPath:
.RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
- 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
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
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.
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>
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
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
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.
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>
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
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
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.
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
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
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.
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>