Application Delivery Management

Interpolaciones in situ

Ahora es posible reemplazar partes de una cadena mediante expresiones de StyleBook. Cuando el compilador de StyleBook evalúe estas expresiones de cadena, la parte de la cadena que usa una expresión de 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 incluidos entre»% {“y «}%» forman una expresión de 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 codifiquen en expresiones de cadena, sino que se evalúen en función de los valores definidos por el usuario.

Un caso práctico de interpolaciones in situ es parametrizar las expresiones de política 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 desea 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 política 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 entender, puede utilizar 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 parece más intuitivo y se acerca más al resultado real.

Tipos permitidos dentro de interpolaciones

Puede usar expresiones que generen valores de los siguientes tipos dentro de las interpolaciones: boolean, 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 de 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 es:

  • $parameters.appname: “lb1”
  • $parámetros.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-% {verdadero}% LB-verdadero
   

Interpolaciones secuenciales

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

Interpolaciones anidadas

Expresión Resultado
% {abc-% {$parámetros.n1 + 1}%}% abc-2
str («% {abc-% {$parámetros.n1}%} %-% {$parámetros.n2}%») bc-1-3
   

Interpolaciones con quotewrap

Expresión Resultado
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>
   

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
Escaping interpolations str(“%{str($parameters.n1) + }\%}%”) 1}%
  lb-%{str($parameters.n1) + }\%}% lb-1}%
  ”%{str($parameters.n1) + \”}\%\”}%” 1}%
     
Interpolaciones in situ