5장. APIcast 네이티브 배포와 정책 체인 통합

기본 APIcast 배포의 경우 THREESCALE_CONFIG_FILE 환경 변수를 사용하여 구성 파일을 지정하여 사용자 지정 정책 체인 을 통합할 수 있습니다. 다음 예제에서는 구성 파일 example.json을 지정합니다.

THREESCALE_CONFIG_FILE=example.json bin/apicast

5.1. 정책에서 변수 및 필터 사용

일부 4.1절. “APIcast 표준 정책” 는 일반 문자열 값뿐만 아니라 요청 컨텍스트에 있는 변수도 사용할 수 있는 템플릿도 지원합니다.

컨텍스트 변수를 사용하려면 {{}} 에 이름을 래핑합니다(예: {{ uri }} ). 변수가 개체인 경우 속성(예: {{ somevar.attr }} )에 액세스할 수도 있습니다.

다음은 모든 정책에서 사용할 수 있는 표준 변수입니다.

  • uri: 쿼리 매개 변수가 이 경로에서 제외된 요청의 경로입니다. 포함된 NGINX 변수 $uri 의 값.
  • host: 요청 호스트(포함된 NGINX 변수 $host값).
  • remote_addr: 클라이언트의 IP 주소(포함된 NGINX 변수 $remote_addr의 값).
  • 헤더: 요청 헤더가 포함된 오브젝트입니다. {{headers['Some-Header']}} 를 사용하여 특정 헤더 값을 가져옵니다.
  • http_method: 요청 방법: GET, POST 등.

이러한 표준 변수는 요청 컨텍스트에서 사용되지만 정책은 컨텍스트에 변수를 추가할 수 있습니다. 단계는 APIcast에 있는 모든 실행 단계를 나타냅니다. 이러한 경우 정책 체인의 모든 정책에서 변수를 사용할 수 있습니다.

  • 동일한 단계 내에서 변수가 정책에 추가되고 추가 후 다음 정책에서 사용되는 경우.
  • 변수가 단계에서 추가되면 다음 단계에서 이 변수를 사용할 수 있습니다.

다음은 표준 3scale APIcast 정책에서 컨텍스트에 추가하는 몇 가지 변수의 예입니다.

  • jwt: JWT 토큰의 구문 분석된 JSON 페이로드(OpenID Connect 인증용).
  • 인증 정보 : 애플리케이션 자격 증명을 보유한 오브젝트입니다. 예: "app_id": "972f7b4f", "user_key": "13b668c4d1e10eaebaa5144b4749713f".
  • service: 현재 요청이 처리되는 서비스의 구성이 포함된 오브젝트입니다. 예: 서비스 ID는 {{ service.id }}로 사용할 수 있습니다.

컨텍스트에서 사용할 수 있는 오브젝트 및 값의 전체 목록은 4.1.15절. “유동 컨텍스트 디버그”을 참조하십시오.

변수는 템플릿의 도움말과 함께 사용됩니다. 예: {{ remote_addr }}, {{ headers['Some-Header'] }}, {{ jwt.aud }}. 값에 대한 변수를 지원하는 정책에는 일반적으로 일반 텍스트의 경우 "plain"이라는 두 개의 값을 허용하는 _type 접미사 (예: value_ type, name_type 등)가 포함된 특수 매개 변수가 있습니다.

APIcast는 변수의 값에 적용할 수 있는 필터도 지원합니다. 필터는 NGINX 함수를 변수의 값에 적용합니다.

필터는 파이프 문자 | 및 필터 이름을 통해 변수의 이름 또는 리터럴 값 뒤에 변수 출력 태그 {{ }} 내에 배치됩니다. 예:

  • {{ 'username:password' | encode_base64 }}, 여기서 username:password 는 변수입니다.
  • {{ uri | escape_uri }}.

일부 필터에는 매개 변수가 필요하지 않으므로 변수 대신 빈 문자열을 사용할 수 있습니다. 예: {{ '' | utctime }} 은 UTC 시간대에서 현재 시간을 반환합니다.

필터를 다음과 같이 연결할 수 있습니다. {{ variable | function1 | function2 }}. 예: {{ '' | utctime | escape_uri }}.

다음은 사용 가능한 함수 목록입니다.