StyleBook-Konfiguration

In-Place-Interpolationen

Es ist jetzt möglich, Teile einer Zeichenfolge durch einen StyleBook-Ausdruck zu ersetzen. Wenn diese String-Ausdrücke vom StyleBook-Compiler ausgewertet werden, wird der Teil der Zeichenfolge, der einen StyleBook-Ausdruck verwendet, durch einen Wert des Ausdrucks ersetzt. Um StyleBook-Ausdrücke in eine Zeichenfolge aufzunehmen, verwenden wir die folgende Notation:

"...%{...}%..." 

Wo die zwischen”% {“und “}%” eingeschlossenen Zeichen einen StyleBook-Ausdruck bilden. Diese Ausdrücke werden als In-Place-Interpolationen bezeichnet.

Zum Beispiellb-%{$parameters.appname}%-svcist der String ein String-Ausdruck mit einer In-Place-Interpolation eines StyleBook-Ausdrucks. Der Wert des String-Ausdrucks hängt vom Wert des Interpolationsausdrucks ab. Beachten Sie, dass$parameters.appnamemit “app1” zugewiesen ist. Dann wird der Zeichenfolgenausdruck zulb-app1-svcausgewertet. Dadurch können die Werte in Zeichenfolgenausdrücken nicht fest codiert werden, sondern anhand der benutzerdefinierten Werte ausgewertet werden.

Ein praktischer Anwendungsfall von In-Place-Interpolationen besteht darin, Richtlinienausdrücke in StyleBooks zu parametrieren. Betrachten Sie ein Szenario, in dem Sie einen Richtlinienausdruck schreiben möchten, der prüft, ob die HTTP-URL ein bestimmtes Wort enthält, beispielsweise “jpeg”.

Dazu schreiben Sie einen Richtlinienausdruck wie folgt: “HTTP.REQ.URL.CONTAINS(\“jpeg\”)”.

Wenn Sie nun das Objekt in der HTTP-URL parametrisieren möchten, können Sie im StyleBook beispielsweise einen String-Parameter hinzufügen$parameters.url-object. Der Richtlinienausdruck wird basierend auf diesem Parameter geschrieben. Dazu verwenden Sie String-Verkettung, um das Ergebnis zu erzielen. Der Ausdruck würde wie folgt aussehen:

str("HTTP.REQ.URL.CONTAINS(\\"" + $parameters.url-object + "\\")") 

Wenn “csv” zugewiesen$parameter.url-objectwird, wird der obige Ausdruck zu “HTTP.REQ.URL.CONTAINS (\” csv\”)” ausgewertet. Dieser Ausdruck ist jedoch nicht leicht zu lesen. Um diese Parametrierung leicht zu lesen und zu verstehen, können Sie direkte Interpolationen verwenden.

Der Ausdruck mit direkter Interpolation lautet nun:

str("HTTP.REQ.URL.CONTAINS(%{quotewrap($parameters.url-object)}%)") 

Im obigen Ausdruck haben Sie einen Interpolationsausdruck verwendet, der die inneren Anführungszeichen um den Wert des $parameters.url-Objekts hinzufügt. Das Ergebnis dieses Ausdrucks ist das gleiche wie oben, aber es sieht intuitiver aus und nähert sich dem tatsächlichen Ergebnis.

Zulässige Typen innerhalb von Interpolationen

Sie können Ausdrücke verwenden, die einen Wert der folgenden Typen in Interpolationen generieren: boolean, numbertcp-portipaddress, und string. Der generierte Wert wird automatisch in eine Zeichenfolge umgewandelt, wenn die Interpolationen durch das Ergebnis ersetzt werden.

Zeichenfolgenausdrücke können 0, 1 oder mehr Interpolationen aufweisen. In einer sequenziellen Interpolation können verschiedene Teile des Zeichenfolgenausdrucks durch verschiedene StyleBook-Ausdrücke ersetzt werden. Die Zeichenfolge g lb-%{$parameters.appname}%-%{$parameters.vip}% gibt “lb-app1-1.1.1.1” zurück, wenn $parameters.appname “app1” und $parameters.vip “1.1.1.1” ist.

String-Ausdrucke unterstutzen欧什verschachtelteInterpolationen. Das heißt, ein Interpolationsausdruck kann in einem anderen Interpolationsausdruck verschachtelt werden, so dass der Wert eines Ausdrucks eine Eingabe für den zweiten Ausdruck werden kann.

Betrachten Sie beispielsweise die Zeichenfolge “%{lb-%{$parameters.port + 1}%}%”

Die interne Zeichenfolge “%{$parameters.port + 1}%” gibt “lb-81” zurück, wenn $parameters.port 80 ist. Hier ist dieser Ausdruck in einem anderen Interpolationsausdruck verschachtelt.

In der folgenden Tabelle werden die verschiedenen Interpolationstypen mit Beispielen und entsprechenden Ergebnissen beschrieben. Der Wert der in den Beispielen verwendeten Parameter ist:

  • $parameters.appname: “lb1”
  • $parameters.vip: “1.1.1.1”
  • $parameters.n1: 1
  • $parameters.n2: 3

Einfache Interpolationen

Ausdruck Ergebnis
磅- % {$ parameters.appname} % def lb-lb1-def

Automatische Typkonvertierungen

Ausdruck Ergebnis
lb-%{1}% lb-1
lb-%{$parameters.vip}% lb-1.1.1.1
lb-%{true}% lb-True

Sequenzielle Interpolationen

Ausdruck Ergebnis
%{$parameters.appname}%-%{str($parameters.appname)}% lb1-lb1
lb-%{1}%-%{2}% lb-1-2

Verschachtelte Interpolationen

Ausdruck Ergebnis
%{abc-%{$parameters.n1 + 1}%}% abc-2
str("%{abc-%{$parameters.n1}%}%-%{$parameters.n2}%") bc-1-3

Interpolationen mitquotewrap

Ausdruck Ergebnis
str("%{quotewrap(abcd)}%") \"abcd\
str("%{quotewrap(https://)}%+HTTP.REQ.HOSTNAME+HTTP.REQ.URL")

Escape-Zeichen in Interpolationen

Wenn die Zeichen”%{“ or “}%” Teil der Zeichenfolge sind, müssen Sie “\” als Escape-Zeichen angeben, damit der StyleBook-Compiler diese nicht als Interpolationstags auswertet.

Beispiel:

str("%{\%\{ + str($parameters.vip) + \}\%}%") returns "%{1.1.1.1}%" if $parameters.vip is 1.1.1.1

In der folgenden Tabelle werden einige weitere Ausdrücke und deren Ergebnisse beschrieben:

|Kategorie|Ausdruck|Ergebnis| |—|—|—| |Escape-Interpolationen|str("%{str($parameters.n1) + \}\%}%")|1}%| | |lb-%{str($parameters.n1) + \}\%}%|lb-1}%| | |"%{str($parameters.n1) + \\"\\}\\%\\"}%"|1}%|

In-Place-Interpolationen