<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
이 주제에서는 정책 오류의 구조와 정책 오류가 발생할 때 설정되는 흐름 변수의 종류를 설명합니다. 이 정보는 프록시에 대한 결함 처리를 설계하고 구현하는 경우에 필요합니다.
이 주제에서는 사용자가 Edge의 오류 처리가 작동하는 방식을 일반적으로 이해하고 있다고 가정합니다. 결함 규칙이 무엇인지 아는 것이 중요합니다. 검토가 필요한 경우 오류 처리를 참조하세요. 이 정보는 정책 오류 참조를 탐색하고 사용하는 데도 도움이 됩니다.
기본 정책 오류 응답 정보
정책에서 오류가 발생하면 Edge에서 즉시 오류 흐름에 진입하여 오류를 생성합니다. 메시지가 표시됩니다. 이 시스템 생성 메시지는 errorcode 및 faultstring이라는 두 가지 정보를 포함하는 JSON 객체입니다.
예를 들면 다음과 같습니다.
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse" } }
다음과 같은 오류 메시지를 신속하게 분석해 보겠습니다.
errorcode는 [prefix].[error_name]
와 같이 프리픽스와 오류 이름으로 구성됩니다. 위의 예시에서 'steps.extractvariables
'는 프리픽스이고 SourceMessageNotAvailable
은 오류 이름입니다. 프리픽스를 통해 오류를 생성한 정책의 종류를 알 수 있습니다. 위의 예시에서는 Extract Variables 정책이 오류를 생성했으며 오류 이름은 SourceMessageNotAvailable
임을 알 수 있습니다.
faultstring에는 오류에 대한 설명이 포함되어 있습니다. 오류 문자열에는 일반적으로 정책 이름, 해결되지 않은 변수의 이름, 오류에 기여한 원인 등 오류를 일으킨 특정 문제를 찾는 데 도움이 되는 단서가 포함되어 있습니다. 예를 들어 위의 오류 메시지에서 'foo
'는 정책에서 참조되는 해결되지 않은 메시지 변수의 이름이고 'ParseJsonResponse
'는 오류를 트리거한 정책의 이름입니다.
정책 오류 관련 변수
정책 오류가 트리거되면 특정 오류별 흐름 변수가 채워집니다. 이러한 변수는 오류 처리 시 매우 유용합니다. 오류 처리 주제에 설명된 대로 시스템에서 발생한 정책 오류를 트래핑하여 커스텀 오류 응답을 제공합니다. 예를 들어, 보안상의 이유로 클라이언트가 Edge가 반환하는 실제 오류와 상태 코드를 확인합니다.
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_component] = [value]
예를 들면 다음과 같습니다.
error.message
= "request message is not available for ExtractVariable:
ParseJsonResponse
'
및
error.status.code = "500"
message
변수는 오류 흐름에서도 사용할 수 있으며 error
변수와 비슷한 목적으로 사용할 수 있습니다. 메시지 변수는 문맥적이므로 특별합니다. 메시지 변수는 요청 흐름에서 요청 변수처럼 작동하며, 응답 흐름에서 응답 값을 가져오거나 설정하는 데 사용할 수 있습니다. 자세한 내용은 메시지 변수 사용 사례를 참조하세요.
변수 참조를 확인하세요.
error
및
message
입니다.