5장. APIcast 네이티브 배포와 정책 체인 통합
기본 APIcast 배포의 경우 THREESCALE_CONFIG_FILE
환경 변수를 사용하여 구성 파일을 지정하여 사용자 지정 정책 체인 을 통합할 수 있습니다. 다음 예제에서는 구성 파일 example.json을 지정합니다.
THREESCALE_CONFIG_FILE=example.json bin/apicast
5.1. 정책에서 변수 및 필터 사용
일부 표준 정책 에서는 일반 문자열 값뿐만 아니라 요청 컨텍스트에 있는 변수도 사용할 수 있도록 하는 var 템플릿을 지원합니다.
컨텍스트 변수를 사용하려면 {{
및 }}
에 이름을 래핑합니다(예: {{ 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 }}로 사용할 수 있습니다.
컨텍스트에서 사용할 수 있는 오브젝트 및 값의 전체 목록은 4.1.18절. “유동 컨텍스트 디버그” 을 참조하십시오.
변수는 템플릿의 도움말과 함께 사용됩니다. 예: {{ 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 }}
.
다음은 사용 가능한 함수 목록입니다.