Citrix Application Delivery Management service

Interpolations sur place

Il est désormais possible de remplacer les parties d’une chaîne à l’aide d’une expression 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 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 chaîne est évaluée à lb-app1-svc. Cela permet aux valeurs d’être non codées en dur dans les expressions de chaîne, mais plutôt évaluées en fonction des valeurs définies par l’utilisateur.

Un cas pratique d’interpolations sur place consiste à paramétrer des 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.CONTAINS(\“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 + "\\")")

If $parameter.url-object is assigned “csv”, the above expression will evaluate to “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 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 à l’intérieur des interpolations

Vous pouvez utiliser des expressions qui génèrent la valeur des types suivants dans les interpolations : booléen, number, tcp-port, ipaddress et string. 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 plus d’interpolations. Dans une interpolation séquentielle, différentes parties de l’expression 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

Caractères d’échappement 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}%