Image Serving supporta un semplice meccanismo di preelaborazione delle richieste basato su regole di corrispondenza e sostituzione delle espressioni regolari.
Raccolte di regole di pre-elaborazione (set di regole) può essere associata ai cataloghi di immagini o al catalogo predefinito. Le regole nel catalogo predefinito si applicano solo se la richiesta non identifica un catalogo di immagini principale specifico.
Le regole di pre-elaborazione delle richieste possono modificare il percorso e le porzioni di query delle richieste prima che vengano elaborate dal Platform Serverparser, che include la manipolazione del percorso, l'aggiunta di comandi, la modifica dei valori dei comandi e l'applicazione di modelli o macro. È inoltre possibile utilizzare le regole per configurare e sostituire determinate funzioni di sicurezza che sono normalmente controllate solo con attributi di catalogo, come l’offuscamento della richiesta, il watermarking e la limitazione del servizio a specifici indirizzi IP del client.
I set di regole vengono memorizzati come file di documento XML. Il percorso relativo o assoluto del file del set di regole deve essere specificato in attribute::RuleSetFile
.
<?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>
La <?xml>
e <ruleset>
gli elementi sono sempre necessari in un file XML di set di regole valido, anche se non sono definite regole effettive.
Uno <ruleset>
elemento contenente un numero qualsiasi di <rule>
gli elementi sono consentiti.
I contenuti dei file delle regole di preelaborazione sono sensibili all’uso di maiuscole e minuscole.
Una copia di RuleSet.xsd viene fornito nella cartella del catalogo e deve essere utilizzato per convalidare un file del set di regole prima di registrarlo nel catalog.ini file. Image Server utilizza una copia interna di RuleSet.xsd per la convalida.
Prima di qualsiasi altra elaborazione, una richiesta HTTP in arrivo viene analizzata in parte per determinare quale catalogo immagini applicare. Una volta identificato il catalogo, viene applicato il set di regole per il catalogo selezionato (o per il catalogo predefinito, se non è stato identificato alcun catalogo specifico).
La <rule>
vengono cercati nell’ordine specificato per ottenere una corrispondenza con il contenuto <expression>
elemento ( expression
).
Se <rule>
viene confrontato con il substitution
viene applicata e la stringa di richiesta modificata viene passata al parser di richiesta del server per una normale elaborazione.
Se non viene effettuata alcuna corrispondenza con successo alla fine del <ruleset>
viene raggiunta, la richiesta viene trasmessa al parser senza modifiche.
Il comportamento predefinito può essere modificato con OnMatch
dell'attributo <rule>
elemento. OnMatch
possono essere fissati break
(predefinito), continue
oppure error
.
Elemento e attributo | Comportamento quando si verifica una corrispondenza |
---|---|
<rule OnMatch="break"> |
L'elaborazione delle regole viene terminata immediatamente dopo l'applicazione della sostituzione di questa regola. Predefinito. |
<rule OnMatch="continue"> |
La sostituzione viene applicata e l'elaborazione continua con la regola successiva. |
<rule OnMatch="error"> |
L'elaborazione delle regole viene terminata immediatamente e lo stato di risposta "richiesta rifiutata" viene restituito al client. |
La rule
Se necessario, puoi definire attributi che sovrascrivono gli attributi del catalogo corrispondenti quando la regola viene confrontata correttamente. Se più regole di corrispondenza impostano lo stesso attributo, l'ultimo prevale. Vedi regola per un elenco di attributi che possono essere controllati con regole.
La corrispondenza semplice delle stringhe funziona per applicazioni molto semplici, ma nella maggior parte delle istanze sono necessarie espressioni regolari. Anche se le espressioni regolari sono standard di settore, l'implementazione specifica varia da un'istanza all'altra.
package java.util.regex descrive l'implementazione specifica delle espressioni regolari utilizzate da Image Serving.
Per facilitare modifiche complesse all’URL, le sottostringhe possono essere acquisite nell’espressione racchiudendo la sottostringa con parentesi (…). Le sottostringhe acquisite vengono numerate in sequenza a partire da 1 in base alla posizione della parentesi iniziale. Le sottostringhe acquisite possono essere inserite nella sostituzione utilizzando $ *
n*
, dove n
è il numero di sequenza della sottostringa acquisita.
È possibile allegare un file set di regole a ciascun catalogo immagini con l'attributo catalogo attribute::RuleSetFile
. Anche se è possibile modificare il file del set di regole in qualsiasi momento, il server di immagini riconosce le modifiche solo quando il catalogo di immagini associato viene ricaricato. Questo ricaricamento si verifica quando il server della piattaforma viene avviato o riavviato e ogni volta che il file del catalogo primario ha un .ini suffisso file, viene modificato o "toccato" per modificare la data del file.
Esempio A. Definisci una regola che aumenti le impostazioni di qualità dell'immagine se il nome dell'immagine ha il suffisso " _hg":
<rule>
<expression>(?i)_hg$</expression>
<substitution>\?&qlt=95,1&resmode=bicub</substitution>
</rule>
L'espressione della regola specifica una corrispondenza senza distinzione tra maiuscole e minuscole di " _hg" alla fine della stringa URL. Il suffisso viene sostituito dalla stringa di query specificata che modifica le impostazioni di qualità dell'immagine. Tieni presente che ?
il carattere nella stringa di sostituzione è escape in quanto si tratta di un carattere speciale nelle espressioni regolari.
Codifica necessaria per il carattere e commerciale. In alternativa, la stringa di sostituzione può essere racchiusa in un blocco CDATA:
<substitution><![CDATA[&qlt=95,1&resmode=bicub]]></substitution>
Esempio B. Una particolare applicazione web non consente stringhe di query. Definire una regola che traduca l'elemento del percorso finale small
, medium
oppure large
a un modello, utilizzando il resto del percorso come nome dell'immagine. Ad esempio: myCat/myImage/small
traduci in myCat/smallTemplate?src=myCat/myImage
.
È possibile utilizzare le sottostringhe per ristrutturare la richiesta:
<rule>
<expression>([^/]+)/(small|medium|large)$</expression>
<substitution>$2Template?src=sample/$1</substitution>
</rule>