Extract Variables 정책 배포 오류 문제 해결

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

NothingToExtract

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory. Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

오류 메시지 예

Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

예시 스크린샷

원인

Extract Variables 정책에 URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload 요소가 없으면 추출할 대상이 없기 때문에 API 프록시 배포가 실패합니다.

오류 메시지에 표시된 대로 Extract Variables 정책에는 URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload 중 최소 하나의 요소가 있어야 합니다.

진단

오류 메시지에서 이름이 지정된 변수 추출 정책을 살펴봅니다. 정책에 URIPath, QueryParam, Header, FormParam, XMLPayload 또는 JSONPayload 요소 중 하나라도 없으면 이는 오류의 원인이 됩니다. 예를 들어 다음의 변수 추출 정책에는 위에서 언급된 요소가 없습니다.

<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Properties/>
</ExtractVariables>

변수 추출 정책에 필수 요소가 없으므로 API 프록시 배포가 실패합니다.

해결 방법

Extract Variables 정책에 최소한 한 개 이상의 필수 요소(URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload)가 있는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
  <DisplayName>EV-XML-Age</DisplayName>
  <Properties/>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces/>
      <Variable name="age" type="integer">
          <XPath>/age</XPath>
      </Variable>
  </XMLPayload>
</ExtractVariables>

NONEmptyPrefixMappedToEmptyURI

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.

오류 메시지 예

Error Saving Revision 3
ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.

예시 스크린샷

원인

이 오류는 변수 추출 정책에, <XMLPayload> 요소 아래의 <Namespace> 요소에서 정의된 프리픽스가 있지만 URI가 정의되지 않은 경우에 발생합니다.

진단

  1. 오류가 발생한 변수 추출 정책과 프리픽스 이름을 식별합니다. 오류 메시지에서 이러한 항목을 모두 확인할 수 있습니다. 예를 들어 다음 오류에서 정책 이름은 EV-XML-Age이고 프리픽스는 apigee입니다.

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. 실패한 추출 변수 정책 XML에서, <XMLPayload>아래의 <Namespace> 요소에서 설정된 프리픽스의 이름이 오류 메시지(위의 1단계)에서 식별된 프리픽스 이름과 일치하는지 확인합니다. 예를 들어 다음 정책은 <Namespace> 요소에 apigee라는 프리픽스를 지정하고 이 프리픽스의 이름은 오류 메시지의 프리픽스 이름과 일치합니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Source clearPayload="false">request</Source>
        <XMLPayload stopPayloadProcessing="false">
          <Namespaces>
            <Namespace prefix="apigee"></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>
    </ExtractVariables>
    
  3. 2단계에서 식별된 특정 프리픽스가 있는 <Namespace> 요소에 유효한 URI가 있는지 확인합니다. URI가 누락되었다면 이는 오류의 원인이 됩니다.

    위의 변수 추출 정책에서는 프리픽스가 apigee<Namespace> 요소에 해당하는 URI가 없으므로 다음과 같은 오류가 발생합니다.

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
    

해결 방법

프리픽스로 정의된 모든 <Namespace> 요소에 대한 변수 추출 정책에 해당 URI가 있는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Source clearPayload="false">request</Source>
    <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>
</ExtractVariables>

DuplicatePrefix

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Duplicate prefix [prefix_name].

오류 메시지 예

Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.

예시 스크린샷

원인

이 오류는 <XMLPayload> 요소 아래의 <Namespace> 요소에서 두 번 이상 정의된 프리픽스와 동일한 프리픽스가 변수 추출 정책에 있으면 발생합니다.

예를 들어 이 오류는 다음과 같이 apigee 프리픽스가 두 번 정의되었으므로 발생합니다.

<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>

진단

  1. 오류가 발생한 변수 추출 정책과 프리픽스 이름을 식별합니다. 오류 메시지에서 이러한 항목을 모두 확인할 수 있습니다. 예를 들어 다음 오류에서 정책 이름은 EV-XML-Age이고 프리픽스는 apigee입니다.

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. 실패한 추출 변수 정책 XML에서, <XMLPayload>아래의 <Namespace> 요소에서 설정된 프리픽스의 이름이 오류 메시지(위의 1단계)에서 식별된 프리픽스 이름과 일치하는지 확인합니다. 예를 들어 다음 정책은 <Namespace> 요소에 apigee라는 프리픽스를 지정하고 이 프리픽스의 이름은 오류 메시지의 프리픽스 이름과 일치합니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Source clearPayload="false">request</Source>
        <XMLPayload stopPayloadProcessing="false">
          <Namespaces>
              <Namespace prefix="gmail">http://mail.google.com</Namespace>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
          </Namespaces>
          <Variable name="legName" type="string
              <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
          </Variable>
        </XMLPayload>
      </ExtractVariables>
    
  3. 2단계에서 식별된 특정 프리픽스가 있는 <Namespace> 요소가 두 번 이상 정의되었는지 확인합니다. 두 번 이상 정의되었으면 이는 오류의 원인입니다.

    위의 변수 추출 정책 예시에서는 프리픽스가 apigee<Namespace> 요소가 두 번 정의되었으므로 다음과 같은 오류가 발생합니다.

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

해결 방법

변수 추출 정책에 있는 <Namespace> 요소의 각 프리픽스에 대해 하나의 정의만 있는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Source clearPayload="false">request</Source>
    <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>
</ExtractVariables>

NoXPathsToEvaluate

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no xpaths to evaluate in variable name.

오류 메시지 예

Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.

예시 스크린샷

원인

변수 추출 정책의 <XMLPayload> 요소 내에 <XPath> 요소가 없으면 API 프록시 배포가 위에 표시된 오류가 표시되면서 실패합니다.

진단

  1. 오류 메시지에서 실패한 변수 추출 정책을 식별합니다. 예를 들어 다음 오류에서 정책 이름은 Extract-Variables-1입니다.

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. 실패한 변수 추출 정책 XML에 <XPath> 하위 요소가 없는 <XMLPayload> 요소가 있는지 확인합니다. 만약 그렇다면 이는 오류의 원인이 됩니다.

    예를 들어 <XMLPayload> 요소가 있는 변수 추출 정책은 다음과 같습니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="HostReachable" type="boolean">
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    <XPath> 요소가 없으므로 API 프록시 배포는 실패합니다.

해결 방법

변수 추출 정책이 <XMLPayload> 요소 아래에 정의된 <XPath> 요소를 포함하는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="HostReachable" type="boolean">
            <XPath>/isReachable</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

EmptyXPathExpression

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: XPath expression is empty in variable name.

오류 메시지 예

Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.

예시 스크린샷

원인

변수 추출 정책이 <XMLPayload> 요소 내에 빈 <XPath> 표현식을 포함하는 경우 API 프록시 배포에 실패합니다.

진단

  1. 오류 메시지에서 실패한 변수 추출 정책을 식별합니다. 예를 들어 다음 오류에서 정책 이름은 Extract-Variables-1입니다.

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. 실패한 변수 추출 정책 XML에 빈 <XPath> 하위 요소를 가지는 <XMLPayload> 요소가 있는지 확인합니다. 만약 그렇다면 이는 오류의 원인이 됩니다.

    예를 들어 <XMLPayload> 요소가 있는 변수 추출 정책은 다음과 같습니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="address" type="string">
                <XPath></XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    <XMLPayload> 요소 내에 빈 <XPath> 요소가 있기 때문에 API 프록시 배포가 실패합니다.

해결 방법

변수 추출 정책에 <XMLPayload> 요소 아래에 정의된, 비어있지 않고 유효한 <XPath> 요소가 있는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="address" type="string">
            <XPath>/address</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

NoJSONPathsToEvaluate

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.

오류 메시지 예

Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.

예시 스크린샷

원인

변수 추출 정책의 <JSONPayload> 요소 내에 <JSONPath> 요소가 없으면 API 프록시 배포가 위에 표시된 오류가 표시되면서 실패합니다.

진단

  1. 오류 메시지에서 실패한 변수 추출 정책을 식별합니다. 예를 들어 다음 오류에서 정책 이름은 Extract-Variables-1입니다.

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. 실패한 변수 추출 정책 XML에서 필수 <JSONPath> 하위 요소가 없는 <JSONPayload> 요소가 있는지 확인합니다. 만약 그렇다면 이는 오류의 원인이 됩니다.

    예를 들어 <JSONPayload> 요소가 있는 변수 추출 정책은 다음과 같습니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <JSONPayload>
            <Variable name="title">
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
    </ExtractVariables>
    

    <JSONPayload> 요소 아래에 정의된 <JSONPath> 하위 요소가 없으므로 API 프록시 배포는 실패합니다.

해결 방법

변수 추출 정책이 <JSONPayload> 요소 아래에 정의된 <JSONPath> 요소를 포함하는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <JSONPayload>
        <Variable name="title">
            <JSONPath>$.book.title</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

EmptyJSONPathExpression

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: JSONPath expression is empty in variable name.

오류 메시지 예

Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.

예시 스크린샷

원인

변수 추출 정책이 <JSONPayload> 요소 내에 빈 <JSONPath> 표현식을 포함하는 경우 API 프록시 배포에 실패합니다.

진단

  1. 오류 메시지에서 실패한 변수 추출 정책을 식별합니다. 예를 들어 다음 오류에서 정책 이름은 Extract-Variables-1입니다.

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. 실패한 변수 추출 정책 XML에 빈 <JSONPath> 하위 요소가 있는 <JSONPayload> 요소가 있는지 확인합니다. 만약 그렇다면 이는 오류의 원인이 됩니다.

    예를 들어 <JSONPayload> 요소가 있는 변수 추출 정책은 다음과 같습니다.

        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
            <DisplayName>Extract Variables-1</DisplayName>
            <Properties/>
            <JSONPayload>
                <Variable name="account_number" type="integer">
                    <JSONPath></JSONPath>
                </Variable>
            </JSONPayload>
            <Source clearPayload="false">request</Source>
            <VariablePrefix>apigee</VariablePrefix>
        </ExtractVariables>
    

    <JSONPayload> 요소 내에 빈 <JSONPath> 요소가 있기 때문에 API 프록시 배포가 실패합니다.

해결 방법

변수 추출 정책에 <JSONPayload> 요소 아래에 정의된, 비어있지 않고 유효한 <JSONPath> 요소가 있는지 확인합니다. 예를 들면 다음과 같습니다.

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <JSONPayload>
        <Variable name="account_number" type="integer">
           <JSONPath>$.account.number</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

MissingName

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]

오류 메시지 예

Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable

예시 스크린샷

원인

변수 추출 정책이 QueryParam, Header, FormParam 또는 Variable과 같은 정책 요소 안에 필요한 name 속성을 가지지 않는다면 API 프록시가 실패합니다.

예를 들어 이 오류는 Variable 요소에 name 속성이 누락된 경우에 발생합니다.

진단

  1. 오류가 발생한 변수 추출 정책의 이름과 name 속성이 누락된 요소의 이름을 식별합니다. 오류 메시지에서 이러한 항목을 찾을 수 있습니다. 예를 들어 다음 오류에서 정책 이름은 Extract-Variables-1이고 요소 이름은 Variable입니다.

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    
  2. 실패한 변수 추출 정책 XML에서, 위의 1단계에서 확인된 이름을 가진 모든 요소에 name 속성이 있는지 확인합니다. 이름 속성이 누락된 요소가 있다면 이는 오류의 원인입니다.

    예를 들어 다음 변수 추출 정책에는 <Variable> 요소가 정의되어 있습니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Variable type="boolean">
            <Pattern>{isAccountActive}</Pattern>
        </Variable>
    </ExtractVariables>
    

    Variable 요소에 name 속성이 없으므로 API 프록시 배포는 실패합니다.

해결 방법

변수 추출 정책이 QueryParam, Header, FormParam 또는 Variable 요소에 필요한 name 속성을 포함하는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Variable name="account_active" type="boolean">
        <Pattern>{isAccountActive}</Pattern>
    </Variable>
</ExtractVariables>

PatternWithoutVariable

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Saving Revision [revision_number]
Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]

오류 메시지 예

Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.

예시 스크린샷

원인

변수 추출 정책에 <Pattern> 요소 내에 지정된 변수가 없으면 API 프록시 배포는 실패합니다. <Pattern> 요소에는 추출된 데이터가 저장될 변수의 이름이 필요합니다.

진단

  1. 오류가 발생한 변수 추출 정책의 이름과 변수가 없는 패턴을 식별합니다. 오류 메시지에서 이러한 항목을 찾을 수 있습니다. 예를 들어 다음 오류에서 정책 이름은 Extract-Variables-1이고 요소 이름은 /a/b입니다.

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. 실패한 추출 변수 정책 XML에서, <Pattern> 요소에서 설정된 패턴이 오류 메시지(위의 1단계)에서 식별된 패턴과 일치하는지 확인합니다. 예를 들어 다음 정책은 오류 메시지의 패턴과 일치하는 패턴 /a/b를 지정합니다.

    예를 들어 다음은 3개의 <Pattern> 요소가 있는 변수 추출 정책입니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractVariables-1">
       <Source>request</Source>
       <URIPath>
          <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
          <Pattern ignoreCase="true">/a/b/</Pattern>
          <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
       </URIPath>
       <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. 2단계에서 식별된 <Pattern> 요소에 변수가 없는지 확인합니다. 변수는 중괄호로 묶어야 합니다. 패턴에 변수가 없으면 이는 오류의 원인이 됩니다.

    패턴이 /a/b<Pattern> 요소에 변수가 포함되지 않으므로 API 프록시 배포가 실패합니다.

    <Pattern ignoreCase="true">/a/b/</Pattern>
    
    

해결 방법

<Pattern> 요소에 변수(중괄호 안에 포함된 이름)가 포함되어 있는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>
</ExtractVariables>

CannotBeConvertedToNodeset

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Deploying Revision [revision_number]
ExtractVariables [policy_name]: Result of xpath [policy_name] cannot be converted to nodeset. Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

오류 메시지 예

Error Deploying Revision 4 to test
ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.

예시 스크린샷

원인

변수 추출 정책에 <Variable> 유형이 nodeset로 정의된 <XPath> 표현식이 있지만 표현식을 nodeset로 변환할 수 없으면 API 프록시 배포가 실패합니다.

진단

  1. 오류가 발생한 변수 추출 정책과 nodeset로 변환할 수 없는 XPath를 식별합니다. 오류 메시지에서 이러한 항목을 모두 확인할 수 있습니다. 예를 들어 다음 오류에서 정책 이름은 Extract-Variables-1이고 XPath는 123입니다.

    ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
    
  2. 실패한 추출 변수 정책 XML에서, <XPath> 요소에서 설정된 XPath가 오류 메시지(위의 1단계)에서 식별된 XPath와 일치하는지 확인합니다. 예를 들어 다음 정책은 오류 메시지에 있는 XPath와 일치하는 123으로 지정합니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>visitor</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="age" type="nodeset">
                <XPath>123</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    
  3. 위의 2단계에서 식별된 <XPath>에 해당하는 <Variable> 요소의 유형을 검사합니다. <Variable> 유형이 nodeset면 이는 오류의 원인입니다.

    예시 변수 추출 정책에서 <XPath> 표현식은 123입니다.

    <XPath>123</XPath>
    

    123 표현식은 nodeset로 변환할 수 없으므로, API 프록시 배포는 실패합니다.

해결 방법

<Variable> 유형이 nodeset로 정의된 경우 변수 추출 정책에서 사용되는 <XPath> 표현식을 nodeset로 변환할 수 있는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>visitor</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="age" type="nodeset">
            <XPath>/visitor/age</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

InvalidPattern

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패하고 다음 오류 메시지가 표시됩니다.

Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]

오류 메시지 예

Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.

예시 스크린샷

원인

변수 추출 정책의 URIPath, QueryParam, Header, FormParam, XMLPayload 또는 JSONPayload와 같은 요소에서 <Pattern> 요소의 정의가 잘못되었으면 API 프록시 배포가 실패합니다.

진단

  1. 오류 메시지에서 실패한 변수 추출 정책을 확인합니다. 예를 들어 다음 오류에서 정책 이름은 Extract-Variables-2입니다.

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. 실패한 변수 추출 정책 XML에서 다음 요소가 있는지 확인하고 <Pattern> 요소를 포함하는지 확인합니다. URIPath, QueryParam, Header, FormParam, XMLPayload 또는 JSONPayload.

    예를 들어 다음은 <QueryParam> 요소 내에 <Pattern> 요소가 있는 변수 추출 정책의 예시입니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractVariables-2">
        <DisplayName>ExtractVariables-2</DisplayName>
        <Source>request</Source>
        <QueryParam name="code">
            <Pattern ignoreCase="true">{*}</Pattern>
        </QueryParam>
        <VariablePrefix>queryinfo</VariablePrefix>
    </ExtractVariables>
    
  3. <Pattern> 요소의 정의를 살펴보세요. 잘못된 정의가 포함된 <Pattern> 요소가 있으면 이는 오류의 원인입니다.

    위의 변수 추출 정책 예시에서 <QueryParam> 요소 내의 <Pattern> 정의가 잘못되었습니다. 따라서 API 프록시 배포는 실패합니다. 일치 및 변수 생성 정보도 참조하세요.

    <Pattern ignoreCase="true">{*}</Pattern>
    
    

해결 방법

변수 추출 정책에서 요소 URIPath, QueryParam, Header, FormParam, XMLPayload 또는 JSONPayload<Pattern> 요소 정의가 올바른지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-2">
    <DisplayName>Extract a value from a query parameter</DisplayName>
    <Source>request</Source>
    <QueryParam name="code">
        <Pattern ignoreCase="true">{code}</Pattern>
    </QueryParam>
    <VariablePrefix>queryinfo</VariablePrefix>
</ExtractVariables>

일치 및 변수 생성 정보도 참조하세요.

XPathCompilationFailed

오류 메시지

Edge UI 또는 Edge Management API를 통한 API 프록시 배포가 실패함 다음 오류 메시지가 표시됩니다.

Error Deploying Revision [revision_number]
ExtractVariables [policy_name]: Failed to compile xpath [xpath] Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

오류 메시지 예

Error Deploying Revision 1 to test
ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.

예시 스크린샷

원인

<XPath> 요소에 사용된 프리픽스 또는 값이 변수 추출 정책에 선언된 네임스페이스의 일부가 아닌 경우 API 프록시의 배포는 실패합니다.

네임스페이스, XPath, 프리픽스에 대한 자세한 내용은 XML 네임스페이스와 XPath 및 XSLT에 미치는 영향을 참조하세요.

진단

  1. 오류가 발생한 Extract Variables 변수 정책과 컴파일할 수 없는 XPath를 식별합니다. 오류 메시지에서 이러한 항목을 모두 확인할 수 있습니다. 예를 들어 다음 오류에서 정책 이름은 EV-XML-Age이고 xpath는 /apigee:Directions/apigee:route/apigee:leg/apigee:name입니다.

    ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
    
  2. 실패한 추출 변수 정책 XML에서, <XPath> 요소에서 설정된 XPath가 오류 메시지(위의 1단계)에서 식별된 XPath와 일치하는지 확인합니다. 예를 들어 다음 정책은 오류 메시지에 있는 Xpath와 일치하는 /apigee:Directions/apigee:route/apigee:leg/apigee:name으로 지정합니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
      <DisplayName>EV-XML-Age</DisplayName>
      <Source clearPayload="false">request</Source>
      <XMLPayload stopPayloadProcessing="false">
        <Namespaces>
            <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>
    </ExtractVariables>
    
  3. 변수 추출 정책의 <Namespaces><XPath> 요소를 검사합니다. 오류 메시지에 표시된 특정 <XPath>가 변수 추출 정책에 선언된 네임스페이스의 일부가 아닌 프리픽스 또는 값을 사용한다면 이는 오류의 원인이 됩니다.

    특정 <XPath>는 변수 추출 정책 예시에서 프리픽스 apigee를 사용합니다.

    <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
    

    하지만 프리픽스 apigee<Namespace> 요소에 정의되지 않았으므로 <XPath>의 컴파일이 실패하면서 배포 실패가 발생합니다.

해결 방법

<XPath> 요소에서 사용 중인 모든 네임스페이스가 Extract Variables 정책에 선언되었는지 확인합니다. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
  <DisplayName>EV-XML-Age</DisplayName>
  <Source clearPayload="false">request</Source>
  <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>
</ExtractVariables>