Servicio Citrix Application Delivery Management

Interpolaciones in situ

Ahora es posible reemplazar parte (s) de una cadena mediante una (s) expresión (s) de StyleBook. Cuando el compilador StyleBook evalúa estas expresiones de cadena, la parte de la cadena que utiliza una expresión StyleBook se reemplazará por el valor de la expresión. Para incluir expresiones StyleBook en una cadena, usamos la siguiente notación:

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

donde los caracteres entre”% {“y “}%” forman una expresión StyleBook. Estas expresiones se conocen como “interpolaciones in situ. “

Por ejemplo, la cadena “lb-% {$parameters.appname} %-svc” es una expresión de cadena con interpolación in situ de una expresión StyleBook. El valor de la expresión de cadena depende del valor de la expresión de interpolación. Considere que $parameters.appname está asignado con “app1. “ A continuación, la expresión de cadena se evalúa como lb-app1-svc. Esto permite que los valores no se codificen en expresiones de cadena, sino que se evalúen en función de los valores definidos por el usuario.

Un caso práctico de uso de interpolaciones in situ es parametrizar expresiones de directiva en StyleBooks. Considere un caso en el que quiera escribir una expresión de directiva que compruebe si la dirección URL HTTP contiene una palabra específica, por ejemplo, “jpeg”.

Para ello, escriba una expresión de directiva de la siguiente manera: “HTTP.REQ.URL.CONTAINS (“jpeg”)”.

Ahora, si quiere parametrizar el objeto en la URL HTTP, puede agregar un parámetro de cadena en el StyleBook, por ejemplo, $parameters.url-object. La expresión de directiva debe escribirse en función de este parámetro. Para hacer eso, usa la concatenación de cadenas para lograr el resultado. La expresión se vería así:

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

Si a $parameter.url-object se le asigna “csv”, la expresión anterior se evaluará como “HTTP.REQ.URL.CONTAINS (“csv”)”. Sin embargo, esta expresión no es fácil de leer. Para que esta parametrización sea fácil de leer y comprender, puede usar interpolaciones in situ.

La expresión con interpolación in situ es ahora:

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

En la expresión anterior, utilizó una expresión de interpolación que agrega las comillas internas alrededor del valor de $parameters.url-object. El resultado de esta expresión es el mismo que el anterior, pero, se ve más intuitivo y más cerca del resultado real.

Tipos permitidos dentro de interpolaciones

Puede utilizar expresiones que generen valor de los siguientes tipos dentro de las interpolaciones: Booleano, number, tcp-port, ipaddress y string. El valor generado se transforma automáticamente en una cadena cuando las interpolaciones se reemplazan con el resultado.

Las expresiones de cadena pueden tener 0, 1 o más interpolaciones. En una interpolación secuencial, diferentes partes de la expresión de cadena se pueden reemplazar por diferentes expresiones StyleBook. Por ejemplo, la cadena lb-% {$parameters.appname} %-% {$parameters.vip}% devuelve “lb-app1-1.1.1.1”, si $parameters.appname es “app1” y $parameters.vip es “1.1.1.1”

Las expresiones de cadena también admiten interpolaciones anidadas. Es decir, una expresión de interpolación se puede anidar dentro de otra expresión de interpolación para que el valor de una expresión pueda convertirse en una entrada a la segunda expresión.

Por ejemplo, considere una cadena “% {lb-% {$parameters.port + 1}%}%”

La cadena interna, “%{$parameters.port + 1}% “devuelve “lb-81” si $parameters.port es 80. Aquí esta expresión está anidada dentro de otra expresión de interpolación.

En la siguiente tabla se describen los diferentes tipos de interpolaciones con ejemplos y resultados correspondientes. El valor de los parámetros utilizados en los ejemplos son:

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

Interpolaciones simples

Expresión Resultado
lb-%{$parameters.appname}%-def lb-lb1-def

Conversiones automáticas de tipos

Expresión Resultado
lb-%{1}% lb-1
lb-%{$parameters.vip}% lb-1.1.1.1
lb-%{true}% lb-True

Interpolaciones secuenciales

Expresión Resultado
%{$parameters.appname}%-%{str($parameters.appname)}% lb1-lb1
lb-%{1}%-%{2}% lb-1-2

Interpolaciones anidadas

Expresión Resultado
%{abc-%{$parameters.n1 + 1}%}% abc-2
str(“%{abc-%{$parameters.n1}%}%-%{$parameters.n2}%”) bc-1-3

Interpolaciones con comillas

Expresión Resultado
str(“%{quotewrap(abcd)}%”) “abcd|
str(“%{quotewrap(https://)}%+HTTP.REQ.HOSTNAME+HTTP.REQ.URL") ”<https://"+HTTP.REQ.HOST NAME+HTTP.REQ.URL

Escapar caracteres en interpolaciones

Si los caracteres “% {“ o “}%” forman parte de la cadena, debe proporcionar “\” como carácter de escape para que el compilador de StyleBook no los evalúe como etiquetas de interpolación.

Ejemplo:

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

En la siguiente tabla se describen algunas expresiones más y sus resultados:

Categoría Expresión Resultado
Escapar interpolaciones str(“%{str($parameters.n1) + }%}%”) 1}%
  lb-%{str($parameters.n1) + }%}% lb-1}%
  "%{str($parameters.n1) + "}%"}%" 1}%

Interpolaciones in situ