ExtractVariables 정책

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

대상

ExtractVariables 정책은 요청 또는 응답에서 콘텐츠를 추출하고 변수 값을 해당 콘텐츠로 설정합니다. 헤더, URI 경로, JSON/XML 페이로드, 양식 매개변수, 쿼리 매개변수를 포함하여 메시지의 모든 부분을 추출할 수 있습니다. 이 정책은 메시지 콘텐츠에 텍스트 패턴을 적용하고 일치하는 항목을 찾으면 지정된 메시지 콘텐츠로 변수를 설정합니다.

요청 또는 응답 메시지에서 정보를 추출하는 데 이 정책을 사용하는 경우가 많지만 이 정책을 사용하여 AccessEntity 정책, XML 객체, JSON 객체에서 만든 항목을 포함한 다른 소스에서 정보를 추출할 수도 있습니다.

지정된 메시지 콘텐츠를 추출한 후 요청 및 응답을 처리하는 과정에서 다른 정책의 변수를 참조할 수 있습니다.

동영상

ExtractVariables 정책에 대한 자세한 내용은 다음 동영상을 참조하세요.

동영상 설명
XML 페이로드에서 변수 추출 Extract Variable 정책을 사용하여 XML 페이로드에서 변수를 추출합니다.
JSON 페이로드에서 변수 추출 Extract Variable 정책을 사용하여 JSON 페이로드에서 변수를 추출합니다.
매개변수에서 변수 추출 쿼리, 헤더, 양식, URI 매개변수 등 매개변수에서 변수를 추출합니다.
다중 값 매개변수에서 변수 추출 다중 값 매개변수에서 변수를 추출합니다.
변수 추출 쿼리 매개변수에서 (Classic Edge) 기본 Edge UI를 사용하여 쿼리 매개변수에서 변수를 추출합니다.
변수 추출 XML 또는 JSON 페이로드에서 전송 (Classic Edge) 기본 Edge UI를 사용하여 XML 또는 JSON 페이로드에서 변수를 추출합니다.

샘플

이러한 정책 코드 샘플은 다음 유형의 아티팩트에서 변수를 추출하는 방법을 보여줍니다.

GitHub

이 링크는 Edge에서 배포하고 실행할 수 있는 작동하는 API 프록시 샘플을 가리킵니다. ExtractVariables를 사용하며 GitHub의 Apigee api-platform-samples 저장소에 있습니다. README는 각 경우에 ExtractVariables가 사용되는 방식과 각 샘플을 배포하고 실행하는 방법을 설명합니다.

URI

<ExtractVariables name="ExtractVariables-1">
   <DisplayName>Extract a portion of the url path</DisplayName>
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/accounts/{id}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

위의 샘플 정책 코드를 살펴보세요. <URIPath> 요소는 URI 경로에서 정보를 추출하도록 ExtractVariables 정책에 알려줍니다. <Pattern> 요소는 URI 경로에 적용할 패턴을 지정합니다. 패턴은 간단한 템플릿으로 처리되며 중괄호는 URI 경로의 여러 부분을 나타냅니다.

설정할 변수의 이름은 <VariablePrefix> 요소에 지정된 값과 <Pattern> 요소의 중괄호 {}로 묶인 값에 따라 결정됩니다. 두 값은 중간 점으로 결합되어 변수 이름은 예를 들어 urirequest.id가 됩니다. <VariablePrefix> 요소가 없으면 변수 이름은 중괄호로 묶인 값입니다.

다음과 같은 수신 요청을 처리할 때 위의 샘플 정책 코드를 고려해 보세요.

GET http://org1-test.apigee.net/svc1/accounts/12797282

API 프록시의 기본 경로가 /svc1이라고 가정합니다. Apigee Edge가 위의 ExtractVariables 정책 코드를 수신 요청에 추가하고, 변수를 설정합니다. urirequest.id에서 12797282(으)로 Apigee Edge가 정책을 실행하면 처리 흐름의 후속 정책이나 코드는 urirequest.id: 문자열 값 12797282를 가져옵니다.

예를 들어 다음 AssignMessage 정책은 해당 변수의 값을 새 요청 메시지의 페이로드에 삽입합니다.

<AssignMessage async="false" continueOnError="false" enabled="true" name="AssignPayload">
 <DisplayName>AssignPayload</DisplayName>
  <Set>
   <Payload contentType="text/xml">
    <IdExtractedFromURI>{urirequest.id}</IdExtractedFromURI>
   </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="true" transport="http" type="request">newRequest</AssignTo>
</AssignMessage>

쿼리 매개변수

<ExtractVariables name="ExtractVariables-2">
   <DisplayName>Extract a value from a query parameter</DisplayName>
   <Source>request</Source>
   <QueryParam name="code">
      <Pattern ignoreCase="true">DBN{dbncode}</Pattern>
   </QueryParam>
   <VariablePrefix>queryinfo</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

다음과 같은 수신 요청을 처리할 때 위의 샘플 정책 코드를 고려해 보세요.

GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271

Apigee Edge가 위의 ExtractVariables 정책 코드를 이 수신 요청에 적용하면 변수 queryinfo.dbncode88271로 설정합니다. Apigee Edge 이후 정책을 실행하는 경우 처리 흐름의 후속 정책이나 코드는 queryinfo.dbncode 변수를 사용하여 문자열 값 88271를 가져옵니다.

이제 프록시에서 queryinfo.dbncode 변수에 액세스할 수 있습니다. 예를 들어 다음 AssignMessage 정책은 요청의 페이로드에 이를 복사합니다.

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
 <DisplayName>GetQP</DisplayName>
  <Set>
   <Payload contentType="text/xml">
    <ExtractQP>{queryinfo.dbncode}</ExtractQP>
   </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

여러 매개변수

<ExtractVariables name="ExtractVariables-2">
   <DisplayName>Extract a value from a query parameter</DisplayName>
   <Source>request</Source>
   <QueryParam name="w">
      <Pattern ignoreCase="true">{firstWeather}</Pattern>
   </QueryParam>
   <QueryParam name="w.2">
     <Pattern ignoreCase="true">{secondWeather}</Pattern>
   </QueryParam>
   <VariablePrefix>queryinfo</VariablePrefix>
 <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

API 설계를 통해 동일한 이름의 여러 쿼리 매개변수를 지정할 수 있다고 가정합니다. 이 정책을 사용하여 'w' 쿼리 매개변수의 여러 인스턴스 값을 추출할 수 있습니다. ExtractVariables 정책에서 이러한 쿼리 매개변수를 참조하려면 색인을 사용합니다. 쿼리 매개변수의 첫 번째 인스턴스에는 색인이 없고 두 번째 인스턴스가 색인 2, 색인 3의 세 번째 등

다음과 같은 수신 요청을 처리할 때 위의 샘플 정책 코드를 고려해 보세요.

GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago

Apigee Edge가 위의 ExtractVariables 정책 코드를 이 수신 요청에 적용하면 변수 queryinfo.firstWeatherBoston로 설정하고 변수 queryInfo.secondWeatherChicago로 설정합니다.

이제 프록시에서 queryinfo.firstWeather 변수 및 queryinfo.secondWeather에 액세스할 수 있습니다. 예를 들어 다음 AssignMessage 정책은 이를 요청의 페이로드에 복사합니다.

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
 <DisplayName>GetQP</DisplayName>
  <Set>
   <Payload contentType="text/xml">
    <ExtractQP1>{queryinfo.firstWeather}</ExtractQP1>
    <ExtractQP2>{queryinfo.secondWeather}</ExtractQP2>
   </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

헤더

<ExtractVariables name='ExtractVariable-OauthToken'>
  <Source>request</Source>
  <Header name="Authorization">
    <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
  </Header>
  <VariablePrefix>clientrequest</VariablePrefix>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

API가 OAuth v2.0 Bearer 토큰을 사용한다고 가정해 보겠습니다. Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.과 같은 헤더를 포함하는 OAuth v2.0 토큰을 전달하는 요청을 처리할 때 위의 샘플 정책 코드를 고려해 보세요.

API 디자이너로서 캐시 조회에서 토큰 값(전체 헤더 아님)을 키로 사용한다고 가정해 보겠습니다. 위의 ExtractVariables 정책 코드를 사용하여 토큰을 추출할 수 있습니다.

Apigee Edge가 위의 ExtractVariables 정책 코드를 이 헤더에 적용하면 clientrequest.oauthtoken 변수를 다음과 같이 설정합니다. TU08xptfFfeM7aS0xHqlxTgEAdAM입니다.

이제 프록시에서 clientrequest.oauthtoken 변수에 액세스할 수 있습니다. 예를 들어 다음 AssignMessage 정책은 이를 요청의 페이로드에 복사합니다.

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
 <DisplayName>GetHeader</DisplayName>
  <Set>
   <Payload contentType="text/xml">
    <ExtractHeader>{clientrequest.oauthtoken}</ExtractHeader>
   </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

JSON

<ExtractVariables name="ExtractVariables-3">
   <Source>response</Source>
   <JSONPayload>
      <Variable name="latitude" type="float">
         <JSONPath>$.results[0].geometry.location.lat</JSONPath>
      </Variable>
      <Variable name="longitude" type="float">
         <JSONPath>$.results[0].geometry.location.lng</JSONPath>
      </Variable>
   </JSONPayload>
   <VariablePrefix>geocoderesponse</VariablePrefix>
</ExtractVariables>
<JSONPayload>$

다음 JSON 응답 페이로드를 고려해 보세요.

{
  "results": [{
    "geometry": {
      "location": {
        "lat": 37.42291810,
        "lng": -122.08542120
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "northeast": {
          "lat": 37.42426708029149,
          "lng": -122.0840722197085
        },
        "southwest": {
          "lat": 37.42156911970850,
          "lng": -122.0867701802915
        }
      }
    }
  }]
}

Apigee Edge가 위의 ExtractVariables 정책 코드를 이 JSON 메시지에 적용하면 geocoderesponse.latitudegeocoderesponse.longitude입니다. 두 변수 모두 geocoderesponse과 동일한 변수 프리픽스를 사용합니다. 이러한 변수의 프리픽스는 <Variable> 요소의 name 속성에서 명시적으로 지정됩니다.

geocoderesponse.latitude 변수는 37.42291810 값을 가져옵니다. geocoderesponse.longitude 변수는 -122.08542120 값을 가져옵니다.

이제 프록시에서 geocoderesponse.latitude 변수에 액세스할 수 있습니다. 예를 들어 AssignMessage 정책은 이를 응답에서 'latitude'라는 헤더에 복사합니다.

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
  <DisplayName>GetJSONVar</DisplayName>
  <Add>
    <Headers>
      <Header name="latitude">{geocoderesponse.latitude}</Header>
    </Headers>
  </Add> 
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="response"/> 
</AssignMessage>

XML

<ExtractVariables name="ExtractVariables-4">
   <Source>response</Source>
   <XMLPayload>
      <Namespaces>
         <Namespace prefix="dir">urn:43BFF88D-D204-4427-B6BA-140AF393142F</Namespace>
      </Namespaces>
      <Variable name="travelmode" type="string">
         <XPath>/dir:Directions/dir:route/dir:leg/dir:step/@mode</XPath>
      </Variable>
      <Variable name="duration" type="string">
         <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:value</XPath>
      </Variable>
      <Variable name="timeunit" type="string">
         <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:text</XPath>
      </Variable>
   </XMLPayload>
   <VariablePrefix>directionsresponse</VariablePrefix>
</ExtractVariables>
<XMLPayload>

다음 XML 응답 페이로드를 고려해 보세요.

<Directions xmlns="urn:43BFF88D-D204-4427-B6BA-140AF393142F">
   <status>OK</status>
   <route>
      <summary>I-40 W</summary>
      <leg>
         <step mode="DRIVING">
            <start_location>
               <lat>41.8507300</lat>
               <lng>-87.6512600</lng>
            </start_location>
            <end_location>
               <lat>41.8525800</lat>
               <lng>-87.6514100</lng>
            </end_location>
            <duration>
                <value>19</value>
                <text>minutes</text>
            </duration>
         </step>
      </leg>
   </route>
</Directions>

Apigee Edge가 위의 ExtractVariables 정책 코드를 이 XML 메시지에 적용하면 세 개의 변수를 설정합니다. directionsresponse.travelmode, directionsresponse.duration, directionsresponse.timeunit 모든 변수는 directionsresponse와 동일한 변수 프리픽스를 사용합니다. 이 변수의 프리픽스는 <Variable> 요소의 name 속성에서 명시적으로 지정됩니다.

directionsresponse.travelmode 변수는 DRIVING 값을 가져옵니다. directionsresponse.duration 변수는 19 값을 가져옵니다. directionsresponse.timeunit 변수는 minutes 값을 가져옵니다.

이제 프록시에서 directionresponse.travelmode 변수에 액세스할 수 있습니다. 예를 들어 다음 AssignMessage 정책은 응답에서 이를 'tmode'라는 헤더에 복사합니다.

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
  <DisplayName>GetXMLVar</DisplayName>
  <Add>
    <Headers>
      <Header name="tmode">{directionsresponse.travelmode}</Header>
    </Headers>
  </Add>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

ExtractVariables 정책 정보

API 개발자는 헤더, URI 경로, 페이로드, 쿼리 매개변수 등 메시지 콘텐츠에 따라 다르게 작동하는 API 프록시를 빌드합니다. 종종 프록시는 조건문에 사용하기 위해 이 콘텐츠의 일부를 추출합니다. 이렇게 하려면 ExtractVariables 정책을 사용하세요.

ExtractVariables 정책을 정의할 때 다음을 선택할 수 있습니다.

  • 설정할 변수의 이름
  • 변수 소스
  • 추출 및 설정할 변수의 수

이 정책을 실행하면 정책이 콘텐츠에 텍스트 패턴을 적용하고 일치하는 항목을 찾으면 지정된 변수의 값이 콘텐츠와 함께 설정됩니다. 그러면 다른 정책 및 코드에서 이러한 변수를 사용하여 동적 동작을 사용 설정하거나 비즈니스 데이터를 Edge API 애널리틱스로 전송할 수 있습니다.

ExtractVariables를 사용하여 콘텐츠 기반 애널리틱스 보고서를 작성하는 방법은 다음을 참조하세요. 분석 커스텀 분석을 사용하는 API 메시지 콘텐츠.

범위

ExtractVariables 정책으로 설정된 변수에는 전역 범위가 있습니다. 즉, ExtractVariables 정책이 새 변수를 정의한 후에는 흐름의 모든 단계(ExtractVariables 정책 후에 실행되는 모든 단계)의 모든 정책 또는 코드에서 해당 변수에 액세스할 수 있습니다. 여기에는 다음이 포함됩니다.

  • PreFlow: ProxyEndpoint 및 TargetEndpoint(요청 및 응답)
  • PostFlow: ProxyEndpoint 및 TargetEndpoint(요청 및 응답)
  • PostClientFlow: ProxyEndpoint(Message Logging 정책을 사용하는 응답만)
  • 오류 흐름
를 통해 개인정보처리방침을 정의할 수 있습니다.

일치 및 변수 생성 정보

ExtractVariables 정책은 요청이나 응답에서 정보를 추출하고 이 정보를 변수에 씁니다. URI 경로 또는 XML 데이터와 같이 추출할 수 있는 각 정보 유형에 대해 일치하는 패턴과 추출된 정보를 보유하는 데 사용되는 변수의 이름을 지정합니다.

그러나 패턴 일치의 작동 방법은 추출 소스에 따라 다릅니다. 다음 섹션에서는 추출할 수 있는 정보의 두 가지 기본 카테고리에 대해 설명합니다.

URI 경로, 쿼리 매개변수, 헤더, 양식 매개변수, 변수 일치

URI 경로, 쿼리 매개변수, 헤더, 양식 매개변수, 변수에서 정보를 추출할 때 <Pattern> 태그를 사용하여 일치시킬 패턴을 하나 이상 지정합니다. 예를 들어 다음 정책 예시에서는 URI 경로에 대한 단일 일치 패턴을 보여줍니다.

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

이 예시에서 Urirequest.pathSeg 변수는 proxy.pathsuffix에서 '/a/' 다음에 나타나는 것으로 설정됩니다. 예를 들어 API 프록시의 기본 경로가 /basepath/v1이라고 가정합니다 http://myCo.com/basepath/v1/a/b에 대한 인바운드 요청의 경우 변수는 'b'로 설정됩니다.

여러 패턴 지정

<Pattern> 태그에 해당하는 여러 패턴을 다음에 따라 지정할 수 있습니다.

  • 모든 패턴이 일치에 대한 테스트를 거쳤습니다.
  • 일치하는 패턴이 없으면 정책은 아무것도 수행하지 않고 변수가 작성되지 않습니다.
  • 둘 이상의 패턴이 일치하면 가장 긴 경로 세그먼트가 추출에 사용됩니다.
  • 일치하는 두 패턴의 가장 긴 경로 세그먼트 길이가 동일한 경우 정책에서 먼저 지정된 패턴이 추출에 사용됩니다.

다음 예시에서는 URI 경로에 대해 세 가지 일치 패턴이 포함된 정책을 만듭니다.

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

기본 경로가 /basepath/v1인 API 프록시의 경우 API 프록시에 대한 인바운드 요청 URL은 다음과 같은 형식이라고 가정합니다.

http://myCo.com/basepath/v1/a/b

이 예시에서 첫 번째 패턴은 URI와 일치하며 urirequest.pathSeg 변수가 'b'로 설정됩니다.

요청 URL이 다음과 같은 경우:

http://myCo.com/basepath/v1/a/b/c/d

세 번째 패턴이 일치하며 urirequest.pathSeg 변수가 'd'로 설정됩니다.

여러 변수가 있는 패턴 지정

일치 패턴에서 여러 변수를 지정할 수 있습니다. 예를 들어 다음 두 변수를 사용하여 일치하는 패턴을 지정합니다.

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/{pathSeg1}/c/{pathSeg2}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

인바운드 요청 URL에 대해 기본 경로가 /basepath/v1인 API 프록시를 다시 가정합니다.

http://myCo.com/basepath/v1/a/b/c/d

...urirequest.pathSeg1 변수는 'b'로 설정되고 urirequest.pathSeg2 변수는 'd'로 설정됩니다.

패턴의 여러 인스턴스 일치

또한 동일한 이름을 가진 항목의 인스턴스가 여러 개 있는 경우에도 패턴을 일치시킬 수 있습니다. 예를 들어 여러 쿼리 매개변수 또는 이름이 같은 여러 헤더를 포함하는 요청을 만들 수 있습니다. 다음 요청에는 'w'라는 두 개의 쿼리 매개변수가 포함됩니다.

http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2

ExtractVariables 정책에서 이러한 쿼리 매개변수를 참조하려면 색인을 사용합니다. 여기서 쿼리 매개변수의 첫 번째 인스턴스에는 색인이 없고, 두 번째는 색인 2, 세 번째는 색인 3 등에 있습니다. 예를 들어 다음 정책은 요청에서 'w'라는 두 번째 쿼리 매개변수 값을 추출합니다.

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <QueryParam name="w.2">
      <Pattern ignoreCase="true">{secondW}</Pattern>
   </QueryParam>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

urirequest.secondW 변수는 '2'로 설정됩니다. 요청에서 두 번째 쿼리 매개변수를 생략하면 urirequest.secondW 변수는 비어 있습니다. 요청에 이름이 같은 항목이 여러 개 있을 때마다 색인 생성을 사용하세요.

패턴에 특수문자 사용

URI 경로를 일치시킬 때 패턴에 '*' 및 '**' 와일드 카드 문자를 사용할 수 있습니다. 각 항목의 의미는 다음과 같습니다.

  • '*'는 경로의 한 세그먼트와 일치합니다.
  • '**'는 경로의 여러 세그먼트와 일치합니다.

예를 들어 아래와 같이 <URIPath> 요소에 패턴을 지정합니다.

<URIPath>
  <Pattern ignoreCase="true">/a/*/{id}</Pattern>
  <Pattern ignoreCase="true">/a/**/{id}</Pattern>
</URIPath>

첫 번째 패턴은 '/a/b/c', '/a/foo/bar' 등과 같은 pathsuffix(기본 경로 다음의 URI 경로의 부분)와 요청을 일치시킵니다. 두 번째 패턴은 '/a/b/c' 및 '/a/foo/bar' 뿐만 아니라 '/a/foo/bar/baz/c'와 같이 '/a/' 뒤의 여러 경로 세그먼트와 일치합니다.

쿼리 매개변수, 헤더, 양식 매개변수에 대한 패턴을 지정할 때 '*' 문자를 모든 문자 수와 일치하도록 지정합니다. 예를 들어 헤더를 일치시킬 때 패턴을 다음과 같이 지정합니다.

*;charset={encoding}

이 패턴은 'text/xml;charset=UTF-16' 및 'application/xml;charset=ASCII' 값과 일치합니다.

ExtractVariables 정책에 전달된 값에 '{'와 같은 특수 문자가 포함된 경우 '%' 문자를 사용하여 이스케이프 처리합니다. 다음 예시에서는 쿼리 매개 변수의 값에서 리터럴 문자로 사용되므로 패턴에서 '{' 및 '}' 문자를 이스케이프합니다.

<QueryParam>
  <Pattern ignoreCase="true">%{user%} {name}</Pattern>
</QueryParam>

이 예시에서 패턴은 '{user} Steve' 값과 일치하지만 'user Steve'라는 값과 일치하지 않습니다.

JSON 및 XML 일치

JSON 및 XML에서 데이터를 추출할 때는 정책에 하나 이상의 <Variable> 태그를 지정합니다. <Variable> 태그는 추출된 정보가 저장된 대상 변수의 이름을 지정하고 추출된 정보에 대한 JsonPath(JSON) 또는 XPATH(XML)를 지정합니다.

정책의 모든 <Variable> 태그는 평가되므로 단일 정책에서 여러 변수를 입력할 수 있습니다. <Variable> 태그가 JSON 또는 XML의 유효한 필드로 평가되지 않으면 해당 변수가 생성되지 않습니다.

다음 예시에서는 응답의 JSON 본문에서 두 변수를 입력하는 ExtractVariables 정책을 보여줍니다.

<ExtractVariables name="ExtractVariables-3">
   <Source>response</Source>
   <JSONPayload>
      <Variable name="latitude" type="float">
         <JSONPath>$.results[0].geometry.location.lat</JSONPath>
      </Variable>
      <Variable name="longitude" type="float">
         <JSONPath>$.results[0].geometry.location.lng</JSONPath>
      </Variable>
   </JSONPayload>
   <VariablePrefix>geocoderesponse</VariablePrefix>
</ExtractVariables>

여러 위치에 있는 동일한 변수에 쓰기

설정할 변수의 이름을 선택할 때는 주의해야 합니다. 정책은 첫 번째 추출 패턴에서 마지막 추출 패턴으로 순차적으로 실행됩니다. 정책이 여러 위치에서 동일한 변수에 값을 쓰는 경우 정책의 마지막 쓰기가 변수의 값을 결정합니다. (원하는 대로 할 수 있습니다.)

예를 들어 다음과 같이 쿼리 매개변수 또는 헤더에서 전달할 수 있는 토큰 값을 추출하려고 합니다.

<!-- If token only in query param, the query param determines the value. 
     If token is found in both the query param and header, header sets value. -->
<QueryParam name="token">
  <Pattern ignoreCase="true">{tokenValue}</Pattern>
</QueryParam>
 
<!-- Overwrite tokenValue even if it was found in query parameter. -->
<Header name="Token">
  <Pattern ignoreCase="true">{tokenValue}</Pattern>
</Header>

일치하는 항목이 없을 때의 결과 제어

패턴이 일치하지 않으면 해당 변수가 생성되지 않습니다. 따라서 다른 정책이 변수를 참조하는 경우 오류가 발생할 수 있습니다.

한 가지 옵션은 변수를 참조하는 정책에서 <IgnoreUnresolvedVariables>를 true로 설정하여 해결할 수 없는 변수를 빈 문자열(null)로 처리하도록 정책을 구성하는 것입니다.

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>

요소 참조

요소 참조는 ExtractVariables 정책의 요소 및 속성을 설명합니다.

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
   <DisplayName>Extract Variables 1</DisplayName>
   <Source clearPayload="true|false">request</Source>
   <VariablePrefix>myprefix</VariablePrefix>
   <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
   <URIPath>
      <Pattern ignoreCase="false">/accounts/{id}</Pattern>
   </URIPath>
   <QueryParam name="code">
      <Pattern ignoreCase="true">DBN{dbncode}</Pattern>
   </QueryParam>
   <Header name="Authorization">
      <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
   </Header>
   <FormParam name="greeting">
      <Pattern>hello {user}</Pattern>
   </FormParam>
   <Variable name="request.content">
       <Pattern>hello {user}</Pattern>
   </Variable>
   <JSONPayload>
      <Variable name="name">
         <JSONPath>{example}</JSONPath>
      </Variable>
   </JSONPayload>
   <XMLPayload stopPayloadProcessing="false">
      <Namespaces/>
      <Variable name="name" type="boolean">
         <XPath>/test/example</XPath>
      </Variable>
   </XMLPayload>
</ExtractVariables>

<ExtractVariables> 속성

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">

다음 표는 모든 정책 상위 요소의 공통 속성에 대해 설명합니다.

속성 설명 기본값 현재 상태
name

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

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

해당 없음 필수
continueOnError

정책이 실패할 경우 오류가 반환되도록 하려면 false로 설정합니다. 이는 대부분의 정책에서 예상되는 동작입니다.

정책이 실패해도 흐름 실행이 계속되도록 하려면 true로 설정합니다.

거짓 선택사항
enabled

정책을 시행하려면 true로 설정합니다.

정책을 중지하려면 false로 설정합니다. 정책이 흐름에 연결되어 있어도 정책이 시행되지 않습니다.

선택사항
async

이 속성은 지원이 중단되었습니다.

거짓 지원 중단됨

<DisplayName> 요소

name 속성 외에도 이 요소를 사용하여 관리 UI 프록시 편집기의 정책에 다른 자연어 이름으로 라벨을 지정합니다.

<DisplayName>Policy Display Name</DisplayName>
기본값

해당 없음

이 요소를 생략하면 정책 name 속성 값이 사용됩니다.

현재 상태 선택사항
유형 문자열

<Source> 요소

(선택사항) 파싱할 변수를 지정합니다. <Source>의 기본값은 message입니다. message 값은 상황에 따라 다릅니다. 요청 흐름에서 message는 요청 메시지로 확인됩니다. 응답 흐름에서 message는 응답 메시지로 확인됩니다.

이 정책을 사용하여 요청 또는 응답 메시지에서 정보를 추출하는 경우가 많지만 모든 변수에서 정보를 추출하는 데 사용할 수 있습니다. 예를 들어 이를 사용하여 AccessEntity 정책에 의해 생성된 항목의 데이터 서비스에서 반환한 콜아웃 정책을 확인하거나 XML 또는 JSON 객체에서 정보를 추출하세요.

<Source>를 확인할 수 없거나 메시지가 아닌 유형으로 확인되면 정책이 응답하지 않습니다.

<Source clearPayload="true|false">request</Source>
기본값: 메시지
Presence: 선택사항
유형: 문자열

속성

속성 설명 기본값 접속 상태 유형
clearPayload

여기에서 데이터를 추출한 후 <Source>에 지정된 페이로드를 삭제하려면 true로 설정합니다.

소스 메시지가 유효하지 않은 경우에만 <clearPayload> 옵션을 사용하세요. 필요합니다. true로 설정하면 메시지에 사용되는 메모리를 확보할 수 있습니다.

거짓

선택사항 불리언

<VariablePrefix> 요소

(선택사항) 전체 변수 이름은 <VariablePrefix>, 점, <Pattern> 요소 또는 <Variable> 요소에서 {중괄호}로 정의한 이름을 결합하여 생성됩니다. 예를 들면 myprefix.id, myprefix.dbncode, myprefix.oauthtoken.입니다.

<VariablePrefix>myprefix</VariablePrefix>

예를 들어 이름 값이 'user'라고 가정해 보겠습니다.

  • <VariablePrefix>를 지정하지 않으면 추출된 값이 user라는 변수에 할당됩니다.
  • <VariablePrefix>가 myprefix로 지정되면 추출된 값이 myprefix.user라는 변수에 할당됩니다.
기본값: 해당 사항 없음
Presence: 선택사항
유형: 문자열

<IgnoreUnresolvedVariables> 요소

(선택사항) 확인할 수 없는 변수를 빈 문자열(null)로 처리하려면 true로 설정합니다. 참조된 변수를 확인할 수 없을 때 정책에 오류를 발생시키려면 false로 설정합니다.

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
기본값: 거짓
Presence: 선택사항
유형: 불리언

XPath 참조가 <XMLPayload>에서 결정되지 않으면 정책에서 다음 오류가 반환됩니다.

{
   "fault":{
      "faultstring":"Unresolved xpath path in policy policy_name.",
      "detail":{
         "errorcode":"steps.extractvariables.InvalidXPath"
      }
   }
}

<URIPath> 요소

(선택사항이지만 자세한 내용은 아래 표의 Presence 행을 참조하세요.) request 소스 메시지의 proxy.pathsuffix에서 값을 추출합니다. 패턴에 적용된 경로는 proxy.pathsuffix이며 API 프록시의 기본 경로를 포함하지 않습니다. 소스 메시지가 response의 메시지 유형으로 확인되는 경우 이 요소는 아무 작업도 수행하지 않습니다.

<URIPath>
   <Pattern ignoreCase="false">/accounts/{id}</Pattern>
</URIPath>

여러 <Pattern> 요소를 사용할 수 있습니다.

<URIPath>
   <Pattern ignoreCase="false">/accounts/{id}</Pattern>
   <Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern>
</URIPath>
기본값: 해당 사항 없음
Presence: 선택사항입니다. 하지만 다음 중 하나 이상을 포함해야 합니다. <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, <XMLPayload>.
유형: 해당 사항 없음

속성

속성 설명 기본값 접속 상태 유형
ignoreCase 패턴 일치 시 대소문자를 무시하도록 지정합니다.

거짓

선택사항 불리언

<QueryParam> 요소

(선택사항이지만 자세한 내용은 아래 표의 Presence 행을 참조하세요.) request 소스 메시지의 지정된 쿼리 매개변수에서 값을 추출합니다. 소스 메시지가 response의 메시지 유형으로 확인되는 경우 이 요소는 아무 작업도 수행하지 않습니다.

<QueryParam name="code">
   <Pattern ignoreCase="true">DBN{dbncode}</Pattern>
</QueryParam>

여러 쿼리 매개변수의 이름이 같으면 색인을 사용하여 매개변수를 참조합니다.

<QueryParam name="w.2">
   <Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>
기본값: 해당 사항 없음
Presence: 선택사항입니다. 하지만 다음 중 하나 이상을 포함해야 합니다. <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, <XMLPayload>.
유형: 해당 사항 없음

속성

속성 설명 기본값 접속 상태 유형
이름 쿼리 매개변수의 이름을 지정합니다. 여러 쿼리 매개변수의 이름이 같으면 색인이 생성된 참조를 사용합니다. 여기서 쿼리 매개변수의 첫 번째 인스턴스에는 색인이 없고, 두 번째는 색인 2, 세 번째는 색인 3입니다.

해당 사항 없음

필수 문자열

<Header> 요소

(선택사항이지만 자세한 내용은 아래 표의 Presence 행을 참조하세요.) 지정된 request 또는 response 메시지의 지정된 HTTP 헤더에서 값을 추출합니다. 여러 헤더의 이름이 같으면 해당 값이 배열에 저장됩니다.

<!-- The name is the actual header name. -->
<Header name="Authorization">
<!-- Provide a name for your new custom variable here. -->
   <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
</Header>

이름이 같은 헤더가 여러 개 있는 경우 색인을 사용하여 배열의 개별 헤더를 참조합니다.

<Header name="myHeader.2">
   <Pattern ignoreCase="true">{secondHeader}</Pattern>
</Header>

또는 다음을 수행하여 배열의 모든 헤더를 나열할 수 있습니다.

<Header name="myHeader.values">
   <Pattern ignoreCase="true">{myHeaders}</Pattern>
</Header>
기본값: 해당 사항 없음
Presence: 선택사항입니다. 하지만 다음 중 하나 이상을 포함해야 합니다. <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, <XMLPayload>.
유형: 해당 사항 없음

속성

속성 설명 기본값 접속 상태 유형
이름 값을 추출할 헤더의 이름을 지정합니다. 여러 헤더의 이름이 같으면 색인이 생성된 참조를 사용합니다. 여기서 헤더의 첫 번째 인스턴스에는 색인이 없고, 두 번째는 색인 2, 세 번째는 색인 3입니다. .values를 사용하여 배열의 모든 헤더를 가져옵니다.

해당 사항 없음

필수 문자열

<FormParam> 요소

(선택사항이지만 자세한 내용은 아래 표의 Presence 행을 참조하세요.) 지정된 request 또는 response 메시지의 지정된 양식 매개변수에서 값을 추출합니다. 지정된 메시지의 Content-Type 헤더가 application/x-www-form-urlencoded인 경우에만 양식 매개변수를 추출할 수 있습니다.

<FormParam name="greeting">
    <Pattern>hello {user}</Pattern>
</FormParam>
기본값: 해당 사항 없음
Presence: 선택사항입니다. 하지만 다음 중 하나 이상을 포함해야 합니다. <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, <XMLPayload>.
유형: 해당 사항 없음

속성

속성 설명 기본값 접속 상태 유형
이름 값을 추출할 양식 매개변수의 이름입니다.

해당 사항 없음

필수 문자열

<Variable> 요소

(선택사항이지만 자세한 내용은 아래 표의 현재 상태 행을 참조하세요.) 값을 추출할 변수의 이름을 지정합니다.

<Variable name="myVar">
    <Pattern>hello {user}</Pattern>
</Variable>

변수에서 두 값을 추출하려면 다음 안내를 따르세요.

<Variable name="myVar">
   <Pattern>hello {firstName} {lastName}</Pattern>
</Variable>
기본값: 해당 사항 없음
Presence: 선택사항입니다. 하지만 다음 중 하나 이상을 포함해야 합니다. <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, <XMLPayload>.
유형: 해당 사항 없음

속성

속성 설명 기본값 접속 상태 유형
이름 값을 추출할 변수의 이름입니다.

해당 사항 없음

필수 문자열

<JSONPayload> 요소

(선택사항이지만 자세한 내용은 아래 표의 현재 상태 행을 참조하세요.) 변수 값을 추출할 JSON 형식의 메시지를 지정합니다. JSON 추출은 메시지의 Content-Type 헤더가 application/json인 경우에만 수행됩니다.

<JSONPayload>
   <Variable name="name" type="string">
      <JSONPath>{example}</JSONPath>
   </Variable>
</JSONPayload>
기본값: 해당 사항 없음
Presence: 선택사항입니다. 하지만 다음 중 하나 이상을 포함해야 합니다. <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, <XMLPayload>.
유형: 해당 사항 없음

<JSONPayload>/<Variable> 요소

(JSONPayload 요소 내에서 필수) 추출된 값이 할당되는 변수를 지정합니다. <JSONPayload> 요소에 여러 <Variable> 태그를 포함하여 여러 변수를 입력할 수 있습니다.

<Variable name="name" type="string">
   <JSONPath>{example}</JSONPath>
</Variable>
기본값: 해당 사항 없음
Presence: JSONPayload 요소 내에서 필수
유형: 해당 사항 없음

속성

속성 설명 기본값 접속 상태 유형
이름

추출된 값이 할당될 변수의 이름을 지정합니다.

이름

필수 문자열
유형 변수 값의 데이터 유형을 지정합니다. 해당 사항 없음 선택사항

문자열. 다음 유형 중에 선택하세요.

  • 문자열
  • 부울
  • 정수
  • long
  • float
  • double
  • nodeset(JSON 프래그먼트 반환)

<JSONPayload>/<Variable>/<JSONPath> 요소

(JSONPayload:Variable 요소 내에서 필수) JSON 형식 메시지에서 값을 추출하는 데 사용되는 JSON 경로를 지정합니다.

<Variable name="name">
   <JSONPath>$.rss.channel.title</JSONPath>
</Variable>
기본값: 해당 사항 없음
Presence: 필수
유형: 문자열

<XMLPayload> 요소

(선택사항이지만 자세한 내용은 아래 표의 현재 상태 행을 참조하세요.) 변수 값을 추출할 XML 형식의 메시지를 지정합니다. XML 페이로드는 메시지의 Content-Type 헤더가 text/xml, application/xml, application/*+xml인 경우에만 추출됩니다.

<XMLPayload stopPayloadProcessing="false">
  <Namespaces>
     <Namespace prefix="apigee">http://www.apigee.com</Namespace>
     <Namespace prefix="gmail">http://mail.google.com</Namespace>
  </Namespaces>
  <Variable name="name" type="boolean">
     <XPath>/apigee:test/apigee:example</XPath>
  </Variable>
</XMLPayload>
기본값: 해당 사항 없음
Presence: 선택사항입니다. 하지만 다음 중 하나 이상을 포함해야 합니다. <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload>, <XMLPayload>.
유형: 해당 사항 없음

속성

속성 설명 기본값 접속 상태 유형
stopPayloadProcessing

하나의 변수가 채워진 후 XPath 평가를 중지하려면 true로 설정합니다. 이는 정책에 의해 하나의 변수만 채워진다는 것을 의미합니다.

거짓

선택사항 불리언

<XMLPayload>/<Namespaces> 요소

(선택사항) XPath 평가에서 사용할 네임스페이스를 지정합니다. XPath 표현식에서 네임스페이스를 사용하는 경우 다음 예시와 같이 여기에서 네임스페이스를 선언해야 합니다.

<XMLPayload stopPayloadProcessing="false">
  <Namespaces>
     <Namespace prefix="apigee">http://www.apigee.com</Namespace>
     <Namespace prefix="gmail">http://mail.google.com</Namespace>
  </Namespaces>
  <Variable name="legName" type="string">
    <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
  </Variable>
</XMLPayload>

XPath 표현식에서 네임스페이스를 사용하지 않는 경우 다음 예시와 같이 <Namespaces> 요소를 생략하거나 주석 처리할 수 있습니다.

<XMLPayload stopPayloadProcessing="false">
  <!-- <Namespaces/> -->
  <Variable name="legName" type="string">
    <XPath>/Directions/route/leg/name</XPath>
  </Variable>
</XMLPayload>
기본값: 해당 사항 없음
Presence: 선택사항
유형: 문자열

속성

속성 설명 기본값 접속 상태 유형
prefix

네임스페이스 프리픽스

해당 사항 없음

필수 문자열

<XMLPayload>/<Variable> 요소

(선택사항) 추출된 값이 할당될 변수를 지정합니다.

<Variable name="name" type="boolean">
   <XPath>/test/example</XPath>
</Variable>
기본값: 해당 사항 없음
Presence: 선택사항
유형: 해당 사항 없음

속성

속성 설명 기본값 접속 상태 유형
이름

추출된 값이 할당될 변수의 이름을 지정합니다.

이름

필수 문자열
유형 변수 값의 데이터 유형을 지정합니다. 불리언 선택사항

문자열. 다음 유형 중에 선택하세요.

  • 문자열
  • 부울
  • 정수
  • long
  • float
  • double
  • nodeset(XML 프래그먼트 반환)

<XMLPayload>/<Variable>/<XPath> 요소

(XMLPayload:Variable 요소 내에서 필수) 변수에 정의된 XPath를 지정합니다. XPath 1.0 표현식만 지원됩니다.

<Variable name="name" type="boolean">
   <XPath>/test/example</XPath>
</Variable>

네임스페이스 예시 XPath 표현식에 네임스페이스를 사용하는 경우 정책의 <XMLPayload><Namespaces> 섹션에서 네임스페이스를 선언해야 합니다.

<Variable name="name" type="boolean">
   <XPath>/foo:test/foo:example</XPath>
</Variable>
기본값: 해당 사항 없음
Presence: 필수
유형: 문자열
<ph type="x-smartling-placeholder">

오류 참조

이 섹션에서는 반환되는 오류 코드, 오류 메시지, 그리고 이 정책이 오류를 트리거할 때 Edge에서 설정하는 오류 변수를 설명합니다. 오류를 처리하기 위해 오류 규칙을 개발 중인 경우, 이 정보는 중요합니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항오류 처리를 참조하세요.

런타임 오류

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

오류 코드 HTTP 상태 원인 해결
steps.extractvariables.ExecutionFailed 500

이 오류는 다음과 같은 경우에 발생합니다.

  • 입력 페이로드(JSON, XML)가 비어 있습니다.
  • 정책에 전달된 입력(JSON, XML 등)이 잘못되었거나 형식이 잘못되었습니다.
steps.extractvariables.ImmutableVariable 500 정책에 사용된 변수는 변경할 수 없습니다. 정책에서 이 변수를 설정할 수 없습니다.
steps.extractvariables.InvalidJSONPath 500 이 오류는 정책의 JSONPath 요소에 잘못된 JSON 경로가 사용되는 경우 발생합니다. 예를 들어 JSON 페이로드에는 Name 객체가 없지만 정책의 경로로 Name을 지정하면 이 오류가 발생합니다.
steps.extractvariables.JsonPathParsingFailure 500 이 오류는 정책이 JSON 경로를 파싱하고 Source 요소에 지정된 흐름 변수에서 데이터를 추출할 수 없는 경우에 발생합니다. 일반적으로 Source 요소에 지정된 흐름 변수가 현재 흐름에 없으면 이 오류가 발생합니다.
steps.extractvariables.SetVariableFailed 500 이 오류는 정책이 값을 변수로 설정하지 못하는 경우에 발생합니다. 이러한 오류는 일반적으로 이름이 중첩된 점으로 구분된 형식으로 된 동일한 단어로 시작하는 여러 변수에 값을 할당하려고 하면 발생합니다.
steps.extractvariables.SourceMessageNotAvailable 500 이 오류는 SOAPMessageValidation 정책의 Source 요소에 지정된 message 변수가 다음 중 하나일 때 발생합니다.
  • 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
  • 확인할 수 없는 경우(정의되지 않음)
steps.extractvariables.UnableToCast 500 이 오류는 정책이 추출된 값을 변수로 전송할 수 없는 경우에 발생합니다. 일반적으로 한 데이터 유형의 값을 다른 데이터 유형의 변수로 설정하려고 하면 이 오류가 발생합니다.

배포 오류

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

오류 이름 원인 해결
NothingToExtract 정책에 URIPath, QueryParam, Header, FormParam, XMLPayload 또는 JSONPayload 요소가 없으면 추출할 대상이 없기 떄문에 API 프록시 배포는 실패합니다.
NONEmptyPrefixMappedToEmptyURI 이 오류는 정책에, XMLPayload 요소 아래의 Namespace 요소에서 정의된 프리픽스가 있지만 URI가 정의되지 않은 경우에 발생합니다.
DuplicatePrefix 이 오류는 XMLPayload 요소 아래의 Namespace 요소에서 두 번 이상 정의된 프리픽스와 동일한 프리픽스가 정책에 있으면 발생합니다.
NoXPathsToEvaluate 정책의 XMLPayload 요소 내에 XPath 요소가 없으면 이 오류로 인해 API 프록시 배포가 실패합니다.
EmptyXPathExpression 정책이 XMLPayload 요소 내에 빈 XPath 표현식을 포함하는 경우 API 프록시 배포에 실패합니다.
NoJSONPathsToEvaluate 정책의 JSONPayload 요소 내에 JSONPath 요소가 없으면 이 오류로 인해 API 프록시 배포가 실패합니다.
EmptyJSONPathExpression 정책이 XMLPayload 요소 내에 빈 XPath 표현식을 포함하는 경우 API 프록시 배포에 실패합니다.
MissingName 정책이 QueryParam, Header, FormParam 또는 Variable과 같은 정책 요소 안에 필요한 name 속성을 가지지 않는다면 API 프록시가 실패합니다.
PatternWithoutVariable 정책에 Pattern 요소 내에 지정된 변수가 없으면 API 프록시 배포는 실패합니다. Pattern 요소에는 추출된 데이터가 저장될 변수의 이름이 필요합니다.
CannotBeConvertedToNodeset 정책에 Variable 유형이 nodeset로 정의된 XPath 표현식이 있지만 표현식을 nodeset로 변환할 수 없으면 API 프록시 배포가 실패합니다.
JSONPathCompilationFailed 정책에서 지정된 JSON 경로를 컴파일할 수 없습니다.
InstantiationFailed 정책을 인스턴스화할 수 없습니다.
XPathCompilationFailed XPath 요소에 사용된 프리픽스 또는 값이 정책에 선언된 네임스페이스의 일부가 아닌 경우 API 프록시의 배포는 실패합니다.
InvalidPattern 정책의 URIPath, QueryParam, Header, FormParam, XMLPayload 또는 JSONPayload와 같은 요소에서 Pattern 요소의 정의가 잘못되었으면 API 프록시 배포가 실패합니다.

오류 변수

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

변수 위치
fault.name="fault_name" fault_name은 위의 런타임 오류 표에 나열된 오류 이름입니다. 오류 이름은 오류 코드의 마지막 부분입니다. fault.name = "SourceMessageNotAvailable"
extractvariables.policy_name.failed policy_name은 오류를 발생시킨 정책의 사용자 지정 이름입니다. extractvariables.EV-ParseJsonResponse.failed = true

오류 응답 예시

{
   "fault":{
      "detail":{
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse"
   }
}

오류 규칙 예시

<FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name = "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition>
</FaultRule>

스키마

관련 주제

커스텀 분석을 사용하여 API 메시지 콘텐츠 분석

변수 참조