ReadPropertySet 정책

개요

ReadPropertySet 정책은 속성 집합을 읽고 흐름 변수를 결과로 채웁니다.

이 정책은 표준 정책이며 모든 환경 유형에 배포할 수 있습니다. 모든 사용자가 정책 및 환경 유형에 대해 알아야 할 필요는 없습니다. 정책 유형과 각 환경 유형에서의 가용성에 대한 자세한 내용은 정책 유형을 참조하세요.

<ReadPropertySet> 요소

ReadPropertySet 정책을 정의합니다.

기본값 아래의 기본 정책 탭을 참조하세요.
필수 여부 필수
유형 복합 객체
상위 요소 해당 사항 없음
하위 요소 <Read>

<ReadPropertySet> 요소는 다음 구문을 사용합니다.

구문

<ReadPropertySet> 요소는 다음 구문을 사용합니다.

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">property-set-name</Name>
    <Key ref="key-ref">key-name</Key>
    <AssignTo>var1</AssignTo>
    <DefaultValue>default-value</DefaultValue>
  </Read>
  ...
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ReadPropertySet>

기본 정책

다음 예시에서는 Apigee UI에서 흐름에 ReadPropertySet 정책을 추가할 때의 기본 설정을 보여줍니다.

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">property-set-name</Name>
    <Key ref="key-ref">key-name</Key>
    <AssignTo>var1</AssignTo>
    <DefaultValue>default-value</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ReadPropertySet>

Apigee UI에서 새 ReadPropertySet 정책을 삽입할 때 템플릿에는 모든 가능한 작업에 대한 스텁이 포함됩니다. 필수 요소에 대한 자세한 내용은 아래를 참조하세요.

이 요소에는 다음과 같이 모든 정책에 공통된 속성이 있습니다.

속성 기본 필수 여부 설명
name 해당 없음 필수

정책의 내부 이름입니다. name 속성의 값에는 문자, 숫자, 공백, 하이픈, 밑줄, 마침표가 포함될 수 있습니다. 이 값은 255자(영문 기준)를 초과할 수 없습니다.

원하는 경우 <DisplayName> 요소를 사용하여 관리 UI 프록시 편집기의 정책에 다른 자연어 이름을 사용하여 정책에 라벨을 지정합니다.

continueOnError false 선택 정책이 실패할 경우 오류가 반환되도록 하려면 false로 설정합니다. 이는 대부분의 정책에서 예상되는 동작입니다. 정책이 실패해도 흐름 실행이 계속되도록 하려면 true로 설정합니다. 참조:
enabled true 선택 정책을 시행하려면 true로 설정합니다. 정책을 중지하려면 false로 설정합니다. 정책이 흐름에 연결되어 있어도 정책이 시행되지 않습니다.
async   false 지원 중단됨 이 속성은 지원이 중단되었습니다.

다음 표에서는 <ReadPropertySet>의 하위 요소에 대한 대략적인 설명을 제공합니다.

하위 요소 필수 여부 설명
<Read> 필수 속성 집합 변수를 읽고 확인하고 지정된 흐름 변수에 설정합니다.

<IgnoreUnresolvedVariables> 선택사항 속성 집합이 확인되지 않은 경우 처리가 중지되는지 여부를 결정합니다.

예시

이 섹션에서는 <ReadPropertySet>를 사용하는 예시를 제공합니다.

예시

이 예시에서는 <ReadPropertySet>를 사용해서 propertyset.environment.name.request.headers.api-version을 가져오고 이를 target_url에 할당합니다. 속성 집합 값을 가져오지 않았으면 대신 https://httpbin.org/get이 사용됩니다.

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">environment.name</Name>
    <Key ref="key-ref">request.headers.api-version</Key>
    <AssignTo>target_url</AssignTo>
    <DefaultValue>https://httpbin.org/get</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</ReadPropertySet>

하위 요소 참조

이 섹션에서는 <ReadPropertySet>의 하위 요소를 설명합니다.

<Read>

속성 집합 변수를 확인하고 흐름 변수에 결과를 설정합니다.

<Read> 요소는 확인할 속성 집합 변수와 이 값을 설정할 흐름 변수를 지정합니다. 여기에는 또한 속성 집합이 확인되지 않은 경우에 사용되는 선택적인 기본값이 포함됩니다. 단일 <ReadPropertySet> 정책에 <Read> 요소를 여러 개 포함할 수 있습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 복합 유형
상위 요소 <ReadPropertySet>
하위 요소 <Name>
<Key>
<AssignTo>
<DefaultValue>

<Read> 요소는 다음 구문을 사용합니다.

구문

<Read>
  <Name ref="set-ref">property-set-name</Name>
  <Key ref="key-ref">key-name</Key>
  <AssignTo>var1</AssignTo>
  <DefaultValue>default-value</DefaultValue>
</Read>

예시

이 예시에서는 <ReadPropertySet>를 사용해서 propertyset.environment.name.request.headers.api-version을 가져오고 이를 target_url에 할당합니다. 속성 집합 값을 가져오지 않았으면 대신 https://httpbin.org/get이 사용됩니다.

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="environment.name">my-property-set-name</Name>
    <Key ref="request.headers.api-version">my-property-set-key</Key>
    <AssignTo>target_url</AssignTo>
    <DefaultValue>https://httpbin.org/get</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</ReadPropertySet>

다음 표에서는 <Read>의 하위 요소에 대한 대략적인 설명을 제공합니다.

하위 요소 필수 여부 설명
<Name> 필수 문자열

읽을 속성 집합입니다. ref, 값 또는 둘 다 제공합니다.

Apigee가 먼저 ref를 기준으로 Name을 확인하고, 이후 값을 확인하려고 시도합니다. 둘 다 확인할 수 없으면 <DefaultValue>(제공된 경우)가 적용됩니다.

<Name><Key>propertyset.{value_resolved_from_Name}.{value_resolved_from_Key}로 조합됩니다.

<Key> 필수 문자열

변수를 확인할 때 사용되는 속성 집합의 키입니다. ref, 값 또는 둘 다 제공합니다.

Apigee가 먼저 ref를 기준으로 Key을 확인하고, 이후 값을 확인하려고 시도합니다. 둘 다 확인할 수 없으면 <DefaultValue>(제공된 경우)가 적용됩니다.

<Name><Key>propertyset.{value_resolved_from_Name}.{value_resolved_from_Key}로 조합됩니다.

<AssignTo> 필수 문자열

확인된 변수를 할당할 흐름 변수를 지정합니다.
<DefaultValue> 선택사항 문자열

변수를 확인할 수 없을 때 사용할 기본값을 지정합니다.

<IgnoreUnresolvedVariables>

속성 집합이 확인되지 않은 경우 처리가 중지되는지 여부를 결정합니다. 확인되지 않은 변수를 무시하고 계속 처리하려면 true로 설정합니다.

<DefaultValue>가 제공된 경우 IgnoreUnresolvedVariables를 적용할 수 없습니다.

기본값 거짓
필수 여부 선택사항
유형 부울
상위 요소 <ReadPropertySet>
하위 요소 없음

오류 참조

이 섹션에서는 반환되는 오류 코드 및 오류 메시지와 <ReadPropertySet> 정책과 관련해서 Apigee에서 설정된 오류 변수에 대해 설명합니다. 오류를 처리하기 위해 오류 규칙을 개발 중인 경우, 이 정보는 중요합니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항오류 처리를 참조하세요.

런타임 오류

이러한 오류는 정책이 실행될 때 발생할 수 있습니다.

오류 코드 HTTP 상태 원인
steps.readpropertyset.UnresolvedVariable 500

이 오류는 ReadPropertySet 정책에 지정된 변수가 다음 중 하나인 경우에 발생합니다.

  • 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
  • 또는
  • 확인할 수 없는 경우(정의되지 않음)

<IgnoreUnresolvedVariables>가 false이고 <DefaultValue>가 지정되지 않았으면 확인이 실패합니다.

배포 오류

이 오류는 이 정책이 포함된 프록시를 배포할 때 발생할 수 있습니다.

오류 이름 원인
steps.readpropertyset.EmptyReads 정책에 <Read> 하위 요소가 없습니다.
steps.readpropertyset.FieldUnset 다음 중 하나라도 해당하면 이 코드가 반환됩니다.
  • 참조 또는 이름이 <Name>에 설정되지 않음
  • 참조 또는 이름이 <Key>에 설정되지 않음
  • <AssignTo>에 대해 제공된 값이 없음

오류 변수

이러한 변수는 이 정책이 런타임 시 오류를 트리거할 때 설정됩니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항을 참조하세요.

변수 각 항목의 의미는 다음과 같습니다. 예시
fault.name="FAULT_NAME" FAULT_NAME은 위의 런타임 오류 표에 나열된 오류 이름입니다. 오류 이름은 오류 코드의 마지막 부분입니다. fault.name Matches "UnresolvedVariable"
readpropertyset.POLICY_NAME.failed POLICY_NAME은 오류를 발생시킨 정책의 사용자 지정 이름입니다. readpropertyset.RPS-SetResponse.failed = true

오류 응답 예시

  {
    "fault": {
      "faultstring": "ReadPropertySet[RPS-SetResponse]: unable to resolve variable [variable_name]",
      "detail": {
        "errorcode": "steps.readpropertyset.UnresolvedVariable"
      }
    }
  }
  

오류 규칙 예시

  <FaultRule name="ReadPropertySet Faults">
      <Step>
          <Name>RPS-CustomSetVariableErrorResponse</Name>
          <Condition>(fault.name = "SetVariableFailed")</Condition>
      </Step>
      <Condition>(readpropertyset.failed = true)</Condition>
  </FaultRule>
  

스키마

각 정책 유형은 XML 스키마(.xsd)로 정의됩니다. 참고로 GitHub에서 정책 스키마를 사용할 수 있습니다.