이 페이지는 Apigee 및 Apigee Hybrid에 적용됩니다.
Apigee Edge 문서 보기
message
흐름 변수 및 해당 속성에 대한 액세스는 액세스되는 API 프록시 흐름 내의 지점에 따라 다릅니다. 모든 컨텍스트에서 사용할 수 있지만 request
또는 response
와 같은 일부 객체는 사용할 수 없습니다.
사용 사례
message
흐름 변수의 주요 사례는 프록시가 오류 흐름으로 전환되는 경우입니다. request
및 response
흐름 변수는 범위를 벗어나게 됩니다.
예를 들어 오류 흐름에서 response
객체는 사용할 수 없습니다. 오류 흐름에 있는 경우 자바스크립트 정책을 사용하여 response
객체에 응답 헤더를 설정할 수 없습니다. 대신 다음 중 하나를 사용할 수 있습니다.
두 객체 모두 오류 흐름에서 사용할 수 있으며, 자바스크립트 정책 내에서 응답 헤더를 설정하는 데 사용하거나 흐름 변수를 사용할 수 있는 다른 정책에서 액세스할 수 있습니다.
AssignMessage 정책을 사용하여 헤더와 같은 값을 응답 객체에 할당할 수 있습니다. AssignMessage는 요청/응답 흐름에서 오류 흐름으로의 컨텍스트 전환을 자동으로 처리합니다.
message
변수의 또 다른 사용 사례는 MessageLogging 정책을 사용하여 PostClientFlow의 응답 데이터를 로깅하는 것입니다. message
객체를 사용하는 경우 프록시의 성공 및 오류 조건 모두에 따라 응답 정보를 원활하게 로깅할 수 있습니다.
예시
오류 흐름에서는 error
또는 message
를 사용하여 자바스크립트 정책에서 응답 헤더를 설정할 수 있습니다. 예를 들면 다음과 같습니다.
context.setVariable('error.header.FOO-1', 'error_header');
또는
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
를 사용할 수 있기 때문에 성공합니다.