메시지 흐름 변수

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

message 흐름 변수 및 해당 속성에 대한 액세스는 액세스되는 API 프록시 흐름 내의 지점에 따라 다릅니다. 모든 컨텍스트에서 사용할 수 있지만 request 또는 response와 같은 일부 객체는 사용할 수 없습니다.

사용 사례

message 흐름 변수의 주요 사례는 프록시가 오류 흐름으로 전환되는 경우입니다. requestresponse 흐름 변수는 범위를 벗어나게 됩니다.

예를 들어 오류 흐름에서 response 객체는 사용할 수 없습니다. 오류 흐름에 있는 경우 자바스크립트 정책을 사용하여 response 객체에 응답 헤더를 설정할 수 없습니다. 대신 다음 중 하나를 사용할 수 있습니다.

두 객체 모두 오류 흐름에서 사용할 수 있으며, 자바스크립트 정책 내에서 응답 헤더를 설정하는 데 사용하거나 흐름 변수를 사용할 수 있는 다른 정책에서 액세스할 수 있습니다.

AssignMessage 정책을 사용하여 헤더와 같은 값을 응답 객체에 할당할 수 있습니다. Assign Message는 요청/응답 흐름에서 오류 흐름으로의 컨텍스트 전환을 자동으로 처리합니다.

message 변수의 또 다른 사용 사례는 MessageLogging 정책을 사용하여 PostClientFlow의 응답 데이터를 로깅하는 것입니다. message 객체를 사용하는 경우 프록시의 성공 및 오류 조건 모두에 따라 응답 정보를 원활하게 로깅할 수 있습니다.

오류 흐름에서는 error 또는 message를 사용하여 자바스크립트 정책에서 응답 헤더를 설정할 수 있습니다. 예를 들면 다음과 같습니다.

context.setVariable('error.header.FOO-1', 'error_header');

OR

context.setVariable('message.header.FOO-2', 'message_header');

그러나 다음 표현식은 작동하지 않습니다.

context.setVariable('response.header.FOO-3', 'response_header');

이 경우 response 변수는 오류 흐름의 범위를 벗어납니다. (trace에서는 슬래시를 통해 등호로 표시된 변수에 의해 시각적으로 표시됩니다.)

단일 정책에서 성공 및 오류 흐름 모두에 응답 헤더를 설정하려면 자바스크립트 정책 내에서 message를 사용하면 됩니다. 예를 들면 다음과 같습니다.

<faultrules>
  <faultrule name="invalid_key_rule">
    <step>
      <name>SetResponseHeaders</name>
    </step>
    <condition>(fault.name = "InvalidApiKey")</condition>
  </faultrule>
</faultrules>

정책에서 다음과 같은 코드는 모든 흐름 컨텍스트에서 오류/응답 헤더를 설정합니다.

context.setVariable('message.header.FOO-1', 'the header value');

일반 ProxyResponse 흐름에서 동일한 정책을 다시 사용할 수 있으며 모든 컨텍스트에서 message를 사용할 수 있기 때문에 성공합니다.