Application Delivery Management

Interpolations sur place

Il est désormais 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 “ %{ “ and “}%” 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.” L’expression de chaîne est ensuite évaluée à lb-app1-svc. Cela permet aux valeurs de ne pas être codées en dur dans des expressions de chaîne, mais 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. Imaginons 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.CONTAINS(\“jpeg\”)”.

Maintenant, si vous souhaitez 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 correspond à “HTTP.REQ.URL.CONTAINS(\“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 du $parameters.url-object. Le résultat de cette expression est identique à celui ci-dessus, mais il semble plus intuitif et plus proche du résultat réel.

Types autorisés à l’intérieur des interpolations

Vous pouvez utiliser des expressions qui génèrent des valeurs des types suivants dans les interpolations : booléen, nombre, port TCP, adresse IP 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 comporter 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}%” returns “lb-81” si $parameters.portest égal à 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. Les valeurs des paramètres utilisés dans les exemples sont les suivantes :

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

Interpolations simples

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

Conversions automatiques de type

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

Interpolations séquentielles

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

Interpolations imbriquées

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

Interpolations avec quotewrap

Expression Résultat
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>
   

Caractères d’échappement dans les interpolations

Si les caractères “%{“ or “}%” font partie de la chaîne, vous devez fournir “\” comme caractère d’échappement afin que le compilateur StyleBook ne les évalue pas comme des 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ésultat
Escaping interpolations str(“%{str($parameters.n1) + }\%}%”) 1}%
  lb-%{str($parameters.n1) + }\%}% lb-1}%
  ”%{str($parameters.n1) + \”}\%\”}%” 1}%
     
Interpolations sur place