Product Documentation

현재 위치 삽입

Apr 23, 2017

이제 StyleBook 식을 사용하여 문자열의 일부를 대체할 수 있습니다. 이러한 문자열 식은 StyleBook 컴파일러에서 평가될 때 StyleBook 식을 사용하는 문자열 부분이 식의 값으로 대체됩니다. 문자열에 StyleBook 식을 포함시키려면 다음 표기법을 사용하십시오.

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

여기서 " %{ " 및 "}%" 사이에 있는 문자가 StyleBook 식을 형성합니다. 이러한 식을 "현재 위치 삽입"이라고 합니다.

예를 들어, 문자열 "lb-%{$parameters.appname}%-svc"는 StyleBook 식의 현재 위치 삽입을 포함하는 문자열 식입니다. 문자열 식의 값은 삽입 식의 값에 따라 달라집니다. $parameters.appname에 "app1"이 할당되어 있다고 가정합니다. 이 경우 문자열 식은 lb-app1-svc로 평가됩니다. 이 기능을 사용하면 값을 문자열 식에 하드 코딩하는 대신 사용자 정의 값을 기반으로 평가할 수 있습니다.

현재 위치 삽입의 실제 사용 사례가 StyleBook에서 정책 식을 매개 변수화하는 것입니다. HTTP URL에 특정 단어(예: "jpeg")가 포함되어 있는지 여부를 확인하는 정책 식을 작성한다고 가정합니다.  

이 경우 "HTTP.REQ.URL.CONTAINS(\"jpeg\")"와 같은 정책 식을 작성합니다.

이제 HTTP URL에서 개체를 매개 변수화하려는 경우 StyleBook에 문자열 매개 변수(예: $parameters.url-object)를 추가할 수 있습니다. 정책 식은 이 매개 변수를 기반으로 작성되어야 합니다. 이 예제에서는 문자열 연결을 사용하여 결과를 얻습니다. 식은 다음과 같습니다.

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

$parameter.url-object에 "csv"가 할당되면 위의 식은 "HTTP.REQ.URL.CONTAINS(\"csv\")"로 평가됩니다. 하지만 이 식은 읽기가 쉽지 않습니다. 이 매개 변수화를 쉽게 읽고 이해할 수 있도록 현재 위치 삽입을 사용할 수 있습니다.

현재 위치 삽입을 사용하는 식은 다음과 같습니다.

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

위의 식에서는 $parameters.url-object 값 앞뒤에 내부 인용 부호를 추가하는 삽입 식을 사용했습니다. 이 식의 결과는 위와 동일하지만 보다 직관적이며 실제 결과에 가깝습니다. 

삽입 내에서 허용되는 유형

삽입 내에서 boolean, number, tcp-port, ipaddress 및 string과 같은 유형의 값을 생성하는 식을 사용할 수 있습니다. 삽입이 결과로 대체될 때 생성된 값이 자동으로 문자열로 변환됩니다.

문자열 식에는 0개, 1개 또는 그 이상의 삽입을 사용할 수 있습니다. 순차적 삽입에서 문자열 식의 서로 다른 부분을 서로 다른 StyleBook 식으로 대체할 수 있습니다. 예를 들어 lb-%{$parameters.appname}%-%{$parameters.vip}% 문자열은 $parameters.appname이 "app1"이고 $parameters.vip가 "1.1.1.1"인 경우 "lb-app1-1.1.1.1"을 반환합니다.

문자열 식은 중첩된 삽입도 지원합니다. 즉, 한 식의 값이 두 번째 식에 대한 입력이 될 수 있도록 한 삽입 식을 다른 삽입 식 내에 중첩시킬 수 있습니다. 예를 들어 "%{lb-%{$parameters.port + 1}%}%" 문자열은 $parameters.port가 80인 경우 "lb-81"을 반환합니다. 여기에서 밑줄이 있는 식은 다른 삽입 식에 중첩됩니다.

다음 표에서는 다양한 유형의 삽입에 대해 설명하며 예제와 해당 결과를 제공합니다. 예제에 사용된 매개 변수의 값은 다음과 같습니다.

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

범주

결과

단순 삽입

lb-%{$parameters.appname}%-def

lb-lb1-def

자동 형식 변환

 

 

lb-%{1}%

lb-1

lb-%{$parameters.vip}%

lb-1.1.1.1

lb-%{true}%

lb-True

순차적 삽입

 

"%{$parameters.appname}%-%{str($parameters.appname)}%"

lb1-lb1

lb-%{1}%-%{2}%

lb-1-2

중첩된 삽입

 

"%{abc-%{$parameters.n1 + 1}%}%"

abc-2

str("%{abc-%{$parameters.n1}%}%-%{$parameters.n2}%")

bc-1-3

quotewrap을 사용한 삽입

 

str("%{quotewrap(abcd)}%")

\"abcd\

str("%{quotewrap(https://)}%+HTTP.REQ.HOSTNAME+HTTP.REQ.URL")

\"https://\"+HTTP.REQ.HOSTNAME

+HTTP.REQ.URL

삽입의 이스케이프 문자

"%{" 또는 "}%" 문자가 문자열의 일부인 경우 StyleBook 컴파일러가 이러한 문자를 삽입 태그로 평가하지 않도록 "\"를 이스케이프 문자로 제공해야 합니다.

예제:

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

다음 표에서는 몇 가지 식과 그 결과에 대해 설명합니다.

범주

결과

삽입 이스케이프 처리

 

 

str("%{str($parameters.n1) + \}\%}%")

1}%

lb-%{str($parameters.n1) + \}\%}%

lb-1}%

"%{str($parameters.n1) + \"\\}\\%\"}%"

1}%