이 페이지는 Apigee 및 Apigee Hybrid에 적용됩니다.
Apigee Edge 문서 보기
이 주제에서는 정책 오류의 구조와 정책 오류가 발생할 때 설정되는 흐름 변수의 종류를 설명합니다. 이 정보는 프록시에 대한 결함 처리를 설계하고 구현하는 경우에 필요합니다.
이 주제에서는 Apigee에서 발생하는 오류 처리 방법에 대한 일반적인 내용을 알고 있으며 오류 규칙이 무엇인지 알고 있다고 가정합니다. 검토가 필요한 경우 오류 처리를 참조하세요. 이 정보는 정책 오류 참조를 탐색하고 사용하는 데도 도움이 됩니다.
기본 정책 오류 응답 정보
정책에서 오류가 발생하면 Apigee는 즉시 오류 흐름을 입력하고 오류 메시지를 생성합니다. 이 시스템 생성 메시지는 errorcode
및 faultstring
이라는 두 가지 정보를 포함하는 JSON 객체입니다.
예를 들면 다음과 같습니다.
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"mymessage message is not available for ExtractVariable: ParseJsonResponse" } }
다음과 같은 오류 메시지를 신속하게 분석해 보겠습니다.
errorcode
는 [prefix].[error_name]
과 같이 prefix
와 error
name
으로 구성됩니다. 위의 예시에서 'steps.extractvariables
'는 프리픽스이고 SourceMessageNotAvailable
은 오류 이름입니다. 프리픽스를 통해 오류를 생성한 정책의 종류를 알 수 있습니다. 위의 예시에서는 ExtractVariables 정책이 오류를 생성했으며 오류 이름은 SourceMessageNotAvailable
임을 알 수 있습니다.
faultstring
에는 오류에 대한 설명이 포함되어 있습니다. 오류 문자열에는 일반적으로 정책 이름, 해결되지 않은 변수의 이름, 오류에 기여한 원인 등 오류를 일으킨 특정 문제를 찾는 데 도움이 되는 단서가 포함되어 있습니다. 예를 들어 위의 오류 메시지에서 mymessage
는 정책에서 참조되는 해결되지 않은 메시지 변수의 이름이고, ParseJsonResponse
는 오류를 트리거한 정책의 이름입니다.
정책 오류 관련 변수
정책 오류가 트리거되면 특정 오류별 흐름 변수가 채워집니다. 이러한 변수는 오류 처리 시 매우 유용합니다. 오류 처리에 설명된 대로 시스템 생성 정책 오류를 포착하고, 커스텀 오류 응답 만들기와 같은 후속 작업을 수행하는 것이 일반적입니다. 예를 들어 보안상의 이유로 Apigee가 반환하는 실제 오류 및 상태 코드를 클라이언트에서 볼 수 없도록 해야 할 수 있습니다.
fault.name
변수
정책에서 오류가 발생하면 흐름 변수 fault.name
을 오류 코드의 error_name
부분으로 설정합니다(이전 섹션에서 설명된 대로). 이 변수를 평가하여 조건부로 오류 규칙을 실행하는 것은 매우 일반적입니다.
다음은 fault.name
의 값을 테스트하는 오류 규칙의 예시입니다.
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Source Message Not Available Fault"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition> </Step> </FaultRule>
정책이 오류를 트리거하면 fault.name
변수는 항상 오류 이름으로 설정된다는 점을 명심하세요.
[prefix].[policy_name].failed
변수
fault.name
외에도 개발자가 일반적으로 확인하는 또 다른 변수는 [prefix].[policy_name].failed
플래그이며, 정책이 실행될 때 true 또는 false로 설정됩니다. 오류 규칙에서 플래그가 언제 true로 설정되는지 확인하려는 경우가 있습니다. 즉, 오류가 발생했는지 확인하는 것입니다. 다음은 [prefix].[policy_name].failed
플래그를 확인하는 조건부를 구성하는 방법입니다. 이 변수를 올바르게 확인하려면 다음 두 가지를 알아야 합니다.
- 확인하는 정책의 이름. 이 이름은 표시 이름이 아닌 정책의 이름 속성 값입니다. 이 속성은 항상 정책 정의 XML에 포함됩니다.
- 확인하는 정책 유형에 해당하는 프리픽스. (프리픽스를 찾는 방법은 아래에서 설명합니다.)
이를 설명하기 위해 또 다른 오류 규칙의 예시를 살펴보겠습니다. [prefix].[policy_name].failed
변수 이름이 구성되는 외부 조건에 유의하세요. 이 경우 프리픽스는 extractvariables
이고 정책 이름은 ParseJsonResponse
입니다. 이 경우 오류 규칙은 이 변수가 true인 경우에만 실행됩니다. 팁: 오류 규칙에는 여러 단계가 포함될 수 있으므로 이 패턴은 오류 규칙을 블록으로 구성하는 좋은 방법입니다.
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition> </FaultRule>
error
및 message
변수 정보
error
변수는 프록시의 오류 흐름에서만 사용할 수 있습니다. error
변수에서 오류 메시지, 상태 코드, 이유 구문 등과 같은 유용한 정보를 얻을 수 있습니다. 오류 변수의 형식 지정 패턴은 다음과 같습니다.
error.ERROR_COMPONENT = VALUE
예를 들면 다음과 같습니다.
error.message = "request message is not available for ExtractVariable: ParseJsonResponse"
및
error.status.code = "500"
message
변수는 오류 흐름에서도 사용할 수 있으며 error
변수와 비슷한 목적으로 사용할 수 있습니다. 메시지 변수는 문맥적이므로 특별합니다. 메시지 변수는 요청 흐름에서 요청 변수처럼 작동하며, 응답 흐름에서 응답 값을 가져오거나 설정하는 데 사용할 수 있습니다.
error
및 message
를 포함한 모든 Apigee 변수에 대한 자세한 내용은 흐름 변수 참조를 참조하세요.