4.5. 정책에서 변수 및 필터 사용
일부 표준 정책 은 일반 문자열 값뿐만 아니라 요청 컨텍스트에 있는 변수도 사용할 수 있는 Liquid templating을 지원합니다.
컨텍스트 변수를 사용하려면 {{ 및 }} 에 이름을 래핑합니다(예: {{ uri }} ). 변수가 개체인 경우 속성(예: {{ somevar.attr }} )에 액세스할 수도 있습니다.
다음은 모든 정책에서 사용할 수 있는 표준 변수입니다.
-
uri: 쿼리 매개 변수가 이 경로에서 제외된 요청의 경로입니다. 포함된 NGINX 변수$uri의 값. -
host: 포함된 NGINX 변수$host의 값인 요청 호스트입니다. -
remote_addr: 포함된 NGINX 변수$remote_addr의 값인 클라이언트의 IP 주소입니다. -
헤더: 요청 헤더가 포함된 오브젝트입니다.{{headers['Some-Header']}}를 사용하여 특정 헤더 값을 가져옵니다. -
http_method: 요청 방법: GET, POST 등.
이러한 표준 변수는 요청 컨텍스트에서 사용되지만 정책은 컨텍스트에 변수를 추가할 수 있습니다. 단계는 APIcast에 있는 모든 실행 단계를 나타냅니다. 이러한 경우 정책 체인의 모든 정책에서 변수를 사용할 수 있습니다.
- 동일한 단계 내에서 변수가 정책에 추가되고 추가 후 다음 정책에서 사용되는 경우.
- 변수가 단계에서 추가되면 다음 단계에서 이 변수를 사용할 수 있습니다.
다음은 표준 3scale APIcast 정책에서 컨텍스트에 추가하는 몇 가지 변수의 예입니다.
-
jwt: OpenID Connect 인증에 대한 JWT 토큰의 구문 분석 JSON 페이로드입니다. -
인증정보 : 애플리케이션 자격 증명을 보유한 오브젝트입니다. 예:"app_id": "972f7b4f","user_key": "13b668c4d1e10eaebaa5144b4749713f". -
service: 현재 요청이 처리되는 서비스의 구성이 포함된 오브젝트입니다. 예: 서비스 ID는 {{ service.id }}로 사용할 수 있습니다.
컨텍스트에서 사용 가능한 오브젝트 및 값의 전체 목록은 Liquid context debug 를 참조하십시오.
변수는 템플릿의 도움말과 함께 사용됩니다. 예: {{ remote_addr }}, {{ headers['Some-Header'] }}, {{ jwt.aud }}. 값의 변수를 지원하는 정책에는 일반적으로 _type 접미사가 있습니다. 예를 들어 value_type,name_type. 즉 일반 텍스트의 "plain"과 Liquid"의 두 값을 허용합니다.
APIcast는 변수의 값에 적용할 수 있는 필터도 지원합니다. 필터는 NGINX 함수를 변수의 값에 적용합니다.
필터는 파이프 문자 | 및 필터 이름을 통해 변수의 이름 또는 리터럴 값 뒤에 변수 출력 태그 {{ }} 내에 배치됩니다. 예:
-
{{ 'username:password' | encode_base64 }}, 여기서username:password는 변수입니다. -
{{ uri | escape_uri }}.
일부 필터에는 매개 변수가 필요하지 않으므로 변수 대신 빈 문자열을 사용할 수 있습니다. 예: {{ '' | utctime }} 은 UTC 시간대에서 현재 시간을 반환합니다.
필터를 다음과 같이 연결할 수 있습니다. {{ variable | function1 | function2 }}. 예: {{ '' | utctime | escape_uri }}.
다음은 사용 가능한 함수 목록입니다.