Referência do conjunto de regras

O Image Serving suporta um mecanismo de pré-processamento de solicitação simples, que se baseia em regras de substituição e correspondência de expressões regulares.

Coleções de regras de pré-processamento (rule sets) podem ser anexadas a catálogos de imagens ou ao catálogo padrão. As regras no catálogo padrão se aplicam somente se a solicitação não identificar um catálogo de imagem principal específico.

As regras de pré-processamento de solicitação podem modificar o caminho e as partes de consulta de solicitações antes de serem processadas pelo analisador do Servidor de Plataforma, incluindo manipular o caminho, adicionar comandos, alterar valores de comando e aplicar modelos ou macros. As regras também podem ser usadas para configurar e substituir determinados recursos de segurança que normalmente são controlados apenas com atributos de catálogo, como ofuscação de solicitação, marcação de água, bem como limitar o serviço a endereços IP de cliente específicos.

Os conjuntos de regras são armazenados como arquivos de documento XML. O caminho relativo ou absoluto do arquivo do conjunto de regras deve ser especificado em attribute::RuleSetFile.

Estrutura geral

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

Os elementos <?xml> e <ruleset> são sempre necessários em um arquivo XML de conjunto de regras válido, mesmo se nenhuma regra real estiver definida.

Um elemento <ruleset> contendo qualquer número de elementos <rule> é permitido.

O conteúdo dos arquivos de regras de pré-processamento faz distinção entre maiúsculas e minúsculas.

Validação do conjunto de regras

Uma cópia de RuleSet.xsd é fornecida na pasta de catálogo e deve ser usada para validar um arquivo de conjunto de regras antes de registrá-lo no arquivo catalog.ini. Observe que a Exibição de imagem usa uma cópia interna de RuleSet.xsd para validação.

Pré-processamento de URL

Antes de qualquer outro processamento, uma solicitação HTTP de entrada é parcialmente analisada para determinar qual catálogo de imagem deve ser aplicado. Depois que o catálogo é identificado, o conjunto de regras para o catálogo selecionado (ou o catálogo padrão, se nenhum catálogo específico foi identificado) é aplicado.

Os elementos <rule> são pesquisados na ordem especificada para uma correspondência com o conteúdo do elemento <expression> ( expression).

Se um <rule> for correspondido, o substitution opcional será aplicado e a sequência de solicitação modificada será passada para o analisador de solicitação do servidor para processamento normal.

Se nenhuma correspondência bem-sucedida for feita quando o fim de <ruleset> for atingido, a solicitação será passada para o analisador sem modificação.

O atributo OnMatch

O comportamento padrão pode ser modificado com o atributo OnMatch do elemento <rule>. OnMatch pode ser definido como break (padrão), continueou error.

Elemento e atributo Comportamento quando ocorre uma correspondência

<rule OnMatch="break">

O processamento da regra é encerrado imediatamente após a aplicação da substituição dessa regra. Padrão.

<rule OnMatch="continue">

A substituição é aplicada e o processamento continua com a próxima regra.

<rule OnMatch="error">

O processamento da regra é encerrado imediatamente e um status de resposta de "solicitação recusada" é retornado ao cliente.

Substituição de atributos de catálogo

<rule> os elementos podem, opcionalmente, definir atributos que substituem os atributos de catálogo correspondentes quando a regra for correspondida com êxito. Se várias regras correspondentes definirem o mesmo atributo, o último prevalecerá. Consulte a descrição do 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 obter uma lista de atributos que podem ser controlados com regras.

Expressões regulares

A correspondência de strings simples funciona para aplicativos muito básicos, mas expressões regulares são necessárias na maioria das instâncias. Embora as expressões regulares sejam padrão do setor, a implementação específica varia de instância para instância.

package java.util.regex descreve a implementação de expressão regular específica usada pelo Serviço de imagem.

Substrações capturadas

Para facilitar modificações complexas de URL, as subsequências de caracteres podem ser capturadas na expressão ao delimitar a subsequência de caracteres com parênteses (…). As subsequências capturadas são numeradas sequencialmente, começando por 1, de acordo com a posição dos parênteses à esquerda. As subsequências capturadas podem ser inseridas na substituição usando $ *n*, onde n é o número de sequência da subsequência capturada.

Gerenciar arquivos de conjunto de regras

Um arquivo de conjunto de regras pode ser anexado a cada catálogo de imagem com o atributo de catálogo attribute::RuleSetFile. Embora você possa editar o arquivo do conjunto de regras a qualquer momento, o servidor de imagem reconhece as alterações somente quando o catálogo de imagem associado é recarregado. Esse recarregamento ocorre quando o servidor da plataforma é iniciado ou reiniciado e sempre que o arquivo do catálogo principal, que tem um sufixo de arquivo .ini, é modificado ou "tocado" para alterar a data do arquivo.

Exemplos

Exemplo A. Defina uma regra que aumente as configurações de qualidade da imagem se o nome da imagem tiver o sufixo " _hg":

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

A expressão de regra especifica uma correspondência que não diferencia maiúsculas e minúsculas de " _hg" no final da cadeia de caracteres do URL. O sufixo é substituído pela string de consulta especificada, que altera as configurações de qualidade da imagem. Observe que o caractere ? na cadeia de caracteres de substituição é evitado, pois esse é um caractere especial em expressões regulares.

OBSERVAÇÃO

A codificação necessária para o caractere e comercial (&). Como alternativa, a string de substituição pode ser fechada em um bloco CDATA:

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

Exemplo B. Um aplicativo Web específico não permite sequências de consulta. Defina uma regra que traduza o elemento do caminho à direita small, medium ou large para um modelo, usando o restante do caminho como o nome da imagem. Por exemplo, myCat/myImage/small traduziria para myCat/smallTemplate?src=myCat/myImage.

Podemos usar subsequências para reestruturar a solicitação:

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

Consulte também

pacote java.util.regex

Nesta página