Application Delivery Management

In-Place-Interpolationen

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

              “…%{…}%…”

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

Beispielsweise ist die Zeichenfolge “lb-%{$parameters.appname}%-svc” ein Zeichenfolgenausdruck mit In-Place-Interpolation eines StyleBook-Ausdrucks. Der Wert des Zeichenfolgenausdrucks hängt vom Wert des Interpolationsausdrucks ab. Beachten Sie, dass $parameters.appname mit “app1” zugewiesen ist. Dann wird der Zeichenfolgenausdruck zu lb-app1-svc ausgewertet. Dadurch können die Werte nicht in Zeichenfolgenausdrücken hartcodiert, sondern anhand der benutzerdefinierten Werte ausgewertet werden.

Ein praktischer Anwendungsfall von In-Place-Interpolationen ist die Parametrisierung von Richtlinienausdrücken in StyleBooks. Stellen Sie sich ein Szenario vor, in dem Sie einen Richtlinienausdruck schreiben möchten, der überprüft, ob die HTTP-URL ein bestimmtes Wort enthält, z. B. „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 dem StyleBook einen String-Parameter hinzufügen, z. B. $parameters.url-object. Der Richtlinienausdruck sollte auf der Grundlage dieses Parameters geschrieben werden. 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 $parameter.url-object „csv“ zugewiesen ist, wird der obige Ausdruck als “HTTP.REQ.URL.CONTAINS(\“csv\”)” ausgewertet. Dieser Ausdruck ist jedoch nicht leicht zu lesen. Um diese Parametrisierung leicht lesbar und verständlich zu machen, können Sie In-Place-Interpolationen verwenden.

Der Ausdruck mit In-Place-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 dasselbe wie oben, sieht jedoch intuitiver aus und kommt dem tatsächlichen Ergebnis näher.

Zulässige Typen innerhalb von Interpolationen

Sie können innerhalb von Interpolationen Ausdrücke verwenden, die Werte der folgenden Typen generieren: boolean, number, tcp-port, ipaddress 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 haben. Bei einer sequentiellen 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.

Zeichenfolgenausdrücke unterstützen auch verschachtelte Interpolationen. 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 zum Beispiel eine 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. Die Werte der in den Beispielen verwendeten Parameter sind:

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

Einfache Interpolationen

Ausdruck Ergebnis
lb-%{$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
   

Sequentielle 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 mit Quotewrap

Ausdruck Ergebnis
str(“%{quotewrap(abcd)}%”)
str(“%{quotewrap(https://)}%+HTTP.REQ.HOSTNAME+HTTP.REQ.URL")
“abcd
“«code class=”language-plaintext highlighter-rouge”>https://”+HTTP.REQ.HOST NAME+HTTP.REQ.URL</code>
   

Escape-Zeichen in Interpolationen

Wenn die Zeichen “%{“ oder “}%” Teil der Zeichenfolge sind, müssen Sie “\” als Escape-Zeichen angeben, damit der StyleBook-Compiler diese nicht als Interpolations-Tags 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