Referencia del conjunto de reglas

El servicio de imágenes admite un mecanismo de preprocesamiento de solicitudes sencillo que se basa en reglas de coincidencia y sustitución de expresiones regulares.

Las colecciones de reglas de preprocesamiento (conjuntos de reglas) se pueden adjuntar a catálogos de imágenes o al catálogo predeterminado. Las reglas del catálogo predeterminado se aplican solo si la solicitud no identifica un catálogo de imágenes principal específico.

Las reglas de preprocesamiento de solicitudes pueden modificar la ruta y las partes de consulta de las solicitudes antes de que las procese el analizador de Platform Server, incluida la manipulación de la ruta, la adición de comandos, el cambio de valores de los comandos y la aplicación de plantillas o macros. Las reglas también se pueden utilizar para configurar y anular ciertas funciones de seguridad que normalmente se controlan únicamente con atributos de catálogo, como confusión de solicitudes, marcado de agua, así como para limitar el servicio a direcciones IP de cliente específicas.

Los conjuntos de reglas se almacenan como archivos de documento XML. La ruta relativa o absoluta del archivo del conjunto de reglas debe especificarse en attribute::RuleSetFile.

Estructura general

 <?xml version="1.0" encoding="UTF-8"?> 
<ruleset> 
   <rule> 
      <expression> 
<varname>
  expression 
</varname></expression> 
      <substitution> 
<varname>
  substitution 
</varname></substitution> 
      <addressfilter> 
<varname>
  addressFilter 
</varname></addressfilter> 
      <header> 
<varname>
  headerValue 
</varname></header>  
   </rule> 
</ruleset>

Los elementos <?xml> y <ruleset> siempre son necesarios en un archivo XML de conjunto de reglas válido, incluso si no se han definido reglas reales.

Se permite un elemento <ruleset> que contenga cualquier número de <rule> elementos.

El contenido de los archivos de reglas de preprocesamiento distingue entre mayúsculas y minúsculas.

Validación del conjunto de reglas

Se proporciona una copia de RuleSet.xsd en la carpeta del catálogo y debe utilizarse para validar un archivo del conjunto de reglas antes de registrarlo en el archivo catalog.ini. Tenga en cuenta que Image Serving utiliza una copia interna de RuleSet.xsd para la validación.

Procesamiento previo de URL

Antes de cualquier otro procesamiento, se analiza parcialmente una solicitud HTTP entrante para determinar qué catálogo de imágenes debe aplicarse. Una vez identificado el catálogo, se aplica el conjunto de reglas para el catálogo seleccionado (o el catálogo predeterminado, si no se identificó ningún catálogo específico).

Los elementos <rule> se buscan en el orden especificado para una coincidencia con el contenido del elemento <expression> ( expression).

Si coincide con un <rule>, se aplica el substitution opcional y la cadena de solicitud modificada se pasa al analizador de solicitudes del servidor para su procesamiento normal.

Si no se realiza una coincidencia correcta cuando se llega al final del <ruleset>, la solicitud se pasa al analizador sin modificación.

El atributo OnMatch

El comportamiento predeterminado se puede modificar con el atributo OnMatch del elemento <rule>. OnMatch se puede establecer en break (predeterminado), continue, o error.

Elemento y atributo Comportamiento cuando se produce una coincidencia

<rule OnMatch="break">

El procesamiento de reglas se termina inmediatamente después de que se haya aplicado la sustitución de esta regla. Predeterminado.

<rule OnMatch="continue">

La sustitución se aplica y el procesamiento continúa con la siguiente regla.

<rule OnMatch="error">

El procesamiento de reglas se termina inmediatamente y se devuelve al cliente un estado de respuesta "solicitud rechazada".

Anulación de atributos de catálogo

<rule> de forma opcional, pueden definir atributos que anulen los atributos de catálogo correspondientes cuando la regla se ajuste correctamente. Si varias reglas coincidentes establecen el mismo atributo, prevalecerá el último. Consulte la descripción del elemento [<rule>](../../../../../is-api/image-catalog/image-serving-api-ref/c-image-catalog-reference/c-rule-set-reference/r-rule-rule.md#reference-af76c0e2b8be48dabb52b71fe7e51ee9) para obtener una lista de atributos que se pueden controlar con reglas.

Expresiones regulares

La coincidencia de cadenas simple funciona para aplicaciones muy básicas, pero en la mayoría de los casos se requieren expresiones regulares. Aunque las expresiones regulares son estándar en el sector, la implementación específica varía de una instancia a otra.

package java.util.regex describe la implementación de expresiones regulares específicas que utiliza Image Serving.

Subcadenas capturadas

Para facilitar modificaciones complejas de la URL, las subcadenas pueden capturarse en la expresión incluyendo la subcadena con paréntesis (…). Las subcadenas capturadas se numeran secuencialmente comenzando por 1 según la posición del paréntesis de apertura. Las subcadenas capturadas se pueden insertar en la sustitución utilizando $ *n*, donde n es el número de secuencia de la subcadena capturada.

Administración de archivos de conjuntos de reglas

Se puede adjuntar un archivo de conjunto de reglas a cada catálogo de imágenes con el atributo de catálogo attribute::RuleSetFile. Aunque puede editar el archivo del conjunto de reglas en cualquier momento, el servidor de imágenes reconoce los cambios solo cuando se vuelve a cargar el catálogo de imágenes asociado. Esta recarga se produce cuando se inicia o reinicia el servidor de la plataforma y siempre que el archivo del catálogo principal, que tiene un sufijo de archivo .ini, se modifica o "se toca" para cambiar la fecha del archivo.

Ejemplos

Ejemplo A. Defina una regla que aumente la configuración de calidad de imagen si el nombre de la imagen tiene el sufijo " _hg":

<rule> 
   <expression>(?i)_hg$</expression> 
   <substitution>\?&amp;qlt=95,1&amp;resmode=bicub</substitution> 
</rule>

La expresión de regla especifica una coincidencia de " _hg" que no distingue entre mayúsculas y minúsculas al final de la cadena de URL. El sufijo se sustituye por la cadena de consulta especificada que cambia la configuración de calidad de la imagen. Tenga en cuenta que el carácter ? de la cadena de sustitución se escapa porque es un carácter especial en las expresiones regulares.

NOTA

La codificación necesaria para el carácter ampersand. Como alternativa, la cadena de sustitución podría incluirse en un bloque CDATA:

<substitution><![CDATA[&qlt=95,1&resmode=bicub]]></substitution>

Ejemplo B. Una aplicación web concreta no permite cadenas de consulta. Defina una regla que traduzca el elemento de ruta final small, medium o large a una plantilla, utilizando el resto de la ruta como nombre de la imagen. Por ejemplo, myCat/myImage/small se traduciría en myCat/smallTemplate?src=myCat/myImage.

Se pueden utilizar subcadenas para reestructurar la solicitud:

<rule> 
   <expression>([^/]+)/(small|medium|large)$</expression> 
   <substitution>$2Template?src=sample/$1</substitution> 
</rule>

Véase también

paquete java.util.regex

En esta página