Interpolations sur place

Il est maintenant possible de remplacer une ou plusieurs parties d’une chaîne à l’aide d’une ou plusieurs expressions StyleBook. Lorsque ces expressions de chaîne sont évaluées par le compilateur StyleBook, la partie de la chaîne qui utilise une expression StyleBook est remplacée par la valeur de l’expression. Pour inclure des expressions StyleBook dans une chaîne, nous utilisons la notation suivante :

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

où les caractères entre » % {“et « } % » forment une expression StyleBook. Ces expressions sont appelées « interpolations sur place. »

Par exemple, la chaîne lb-% {$parameters.appname} %-svc est une expression de chaîne avec interpolation sur place d’une expression StyleBook. La valeur de l’expression de chaîne dépend de la valeur de l’expression d’interpolation. Considérez que $parameters.appname est affecté avec “app1.” Ensuite, l’expression de chaîne est évaluée à lb-app1-svc. Cela permet aux valeurs de ne pas être codées en dur dans les expressions de chaîne, mais plutôt d’être évaluées en fonction des valeurs définies par l’utilisateur.

Un cas d’utilisation pratique des interpolations sur place consiste à paramétrer les expressions de stratégie dans StyleBooks. Considérez un scénario dans lequel vous souhaitez écrire une expression de stratégie qui vérifie si l’URL HTTP contient un mot spécifique, par exemple « jpeg ».

Pour cela, vous écrivez une expression de stratégie comme suit : « HTTP.REQ.URL.CONTAINTS (« jpeg ») ».

Maintenant, si vous voulez paramétrer l’objet dans l’URL HTTP, vous pouvez ajouter un paramètre de chaîne dans le StyleBook, par exemple, $parameters.url-object. L’expression de stratégie doit être écrite en fonction de ce paramètre. Pour ce faire, vous utilisez la concaténation de chaînes pour obtenir le résultat. L’expression ressemblerait à :

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

Si $parameter.url-object est assigné « csv », l’expression ci-dessus évaluera à « HTTP.REQ.URL.CONTAINES (« csv ») ». Cependant, cette expression n’est pas facile à lire. Pour faciliter la lecture et la compréhension de ce paramétrage, vous pouvez utiliser des interpolations sur place.

L’expression avec interpolation sur place est maintenant :

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

Dans l’expression ci-dessus, vous avez utilisé une expression d’interpolation qui ajoute les guillemets internes autour de la valeur de $parameters.url-object. Le résultat de cette expression est le même que ce qui précède, mais, il semble plus intuitif et plus proche du résultat réel.

Types autorisés dans les interpolations

Vous pouvez utiliser des expressions qui génèrent la valeur des types suivants dans les interpolations : booléen, nombre, tcp-port, ipaddress et chaîne. La valeur générée est automatiquement transformée en chaîne lorsque les interpolations sont remplacées par le résultat.

Les expressions de chaîne peuvent avoir 0, 1 ou plusieurs interpolations. Dans une interpolation séquentielle, différentes parties de l’expression de chaîne peuvent être remplacées par différentes expressions StyleBook. Par exemple, la chaîne lb-%{$parameters.appname}%-%{$parameters.vip}% renvoie “lb-app1-1.1.1.1”, si $parameters.appname est “app1” et $parameters.vip est “1.1.1.1”

Les expressions de chaîne prennent également en charge les interpolations imbriquées. Autrement dit, une expression d’interpolation peut être imbriquée dans une autre expression d’interpolation afin que la valeur d’une expression puisse devenir une entrée dans la seconde expression.

Par exemple, considérez une chaîne "%{lb-%{$parameters.port + 1}%}%"

La chaîne interne, “%{$parameters.port + 1}%” renvoie “lb-81” si $parameters.port a la valeur 80. Ici, cette expression est imbriquée dans une autre expression d’interpolation.

Le tableau suivant décrit les différents types d’interpolations avec des exemples et des résultats correspondants. La valeur des paramètres utilisés dans les exemples est :

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

Interpolations simples

Expression Résultats
lb-%{$parameters.appname}%-def lb-lb1-def

Conversions automatiques de type

Expression Résultats
lb-%{1}% lb-1
lb-%{$parameters.vip}% lb-1.1.1.1
lb-%{true}% lb-True

Interpolations séquentielles

Expression Résultats
%{$parameters.appname}%-%{str($parameters.appname)}% lb1-lb1
lb-%{1}%-%{2}% lb-1-2

Interpolations imbriquées

Expression Résultats
%{abc-%{$parameters.n1 + 1}%}% abc-2
str("%{abc-%{$parameters.n1}%}%-%{$parameters.n2}%") bc-1-3

Interpolations avec quotewrap

Expression Résultats
str(“%{quotewrap(abcd)}%”) “abcd|
str(“%{quotewrap(https://)}%+HTTP.REQ.HOSTNAME+HTTP.REQ.URL") ”<https://"+HTTP.REQ.HOST NAME+HTTP.REQ.URL

Échapper les caractères dans les interpolations

Si les caractères “%{“ ou “}%” font partie de la chaîne, vous devez fournir “\” comme caractère d’échappement afin que le compilateur StyleBook ne les évalue pas en tant que balises d’interpolation.

Exemple :

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

Le tableau suivant décrit quelques expressions supplémentaires et leurs résultats :

Catégorie Expression Résultats
Échappement des interpolations str(“%{str($parameters.n1) + }%}%”) 1}%
  lb-%{str($parameters.n1) + }%}% lb-1}%
  ”%{str($parameters.n1) + \”\}\%\”}%” 1}%