DataPower Gateway(Classic) 전용

필드를 수정하기 위한 XPath 표현식 구성

DataPower® Gateway (v5 compatible)를 사용할 때 교정을 위한 필드를 정의하려면 교정할 필드를 지정하는 XPath 표현식을 제공합니다. API 요청 및 응답에서 XML 형식을 사용할 경우 직접 XML 컨텐츠를 기반으로 XPath 명령문을 작성할 수 있습니다. API 요청 및 응답에서 JSON 형식을 사용할 경우 JSON 컨텐츠(JSONx)의 DataPower XML 표시를 사용하여 XPath 표현식을 구성해야 합니다.

이 태스크에 대한 정보

다음 섹션에서는 필드를 수정하기 위한 XPath 표현식 구성 예제를 제공합니다. XML 및 JSON 형식의 API 응답에 대한 예제가 제공됩니다.

XML에 대한 XPath

XML 응답의 다음 예제를 고려하십시오.


<xml>
  <primaryAddress>
    <streetAddress>21 2nd Street</streetAddress>
    <city>New York</city>
    <state>NY</state>
    <postalCode>10021</postalCode>
  </primaryAddress>
  <secondaryAddress>
    <streetAddress>412 Brooklyn Avenue</streetAddress>
    <city>New Jersey</city>
    <state>NJ</state>
    <postalCode>12302</postalCode>
  </secondaryAddress>
</xml>
이전 예제에서 "streetAddress"를 수정하려면 XPath 표현식이 다음과 같습니다. //streetAddress

여기서 표현식의 컴포넌트는 다음 의미를 갖습니다.

표 1. 표현과 의미
표현식 의미
// XML 구조의 모든 곳을 검색
//streetAddress XML 구조의 모든 곳에서 "streetAddress" 유형의 요소를 검색
이 XPath 표현식을 적용한 결과 발생한 XML 응답은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <primaryAddress>
    <streetAddress>*******</streetAddress>			
    <city>New York</city>
    <state>NY</state>
    <postalCode>10021</postalCode>
  </primaryAddress>
  <secondaryAddress>
    <streetAddress>*******</streetAddress>			
    <city>New Jersey</city>
    <state>NJ</state>
    <postalCode>12302</postalCode>
  </secondaryAddress>
</xml>
참고: "streetAddress" "의 두 발생 사례는 모두 삭제되었습니다.

최초 예제에서 "streetAddress" 인시던트의 특정 사건 하나만 수정하려면 XPath 표현식이 다음과 같습니다. //secondaryAddress/streetAddress

여기서 표현식의 컴포넌트는 다음 의미를 갖습니다.

표 2. 표현과 의미
표현식 의미
//secondaryAddress XML 구조의 모든 곳에서 "secondaryAddress" 유형의 요소를 검색
//secondaryAddress/streetAddress 이전 요소에서 "streetAddress" 유형의 하위 요소 검색
이 XPath 표현식을 적용한 결과 발생한 XML 응답은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <primaryAddress>
    <streetAddress>21 2nd Street</streetAddress>
    <city>New York</city>
    <state>NY</state>
    <postalCode>10021</postalCode>
  </primaryAddress>
  <secondaryAddress>
    <streetAddress>*******</streetAddress>			
    <city>New Jersey</city>
    <state>NJ</state>
    <postalCode>12302</postalCode>
  </secondaryAddress>
</xml>
주: 보조 주소만 수정되었습니다.

JSON의 XPath

JSON 응답의 다음 예제를 고려하십시오.

{
  "primaryAddress": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": 10021
  },
  "secondaryAddress": {
    "streetAddress": "412 Brooklyn Avenue",
    "city": "New Jersey",
    "state": "NJ",
    "postalCode": 12302
  }
}
이전 XML 예제와 달리 이 예제에 대한 XPath를 구성하려면 해당하는 DataPower XML 표시(JSONx)를 사용해야 합니다. 이 JSON 응답에 해당하는 JSONx는 다음과 같습니다.
<json:object xsi:schemaLocation="http://www.datapower.com/schemas/json jsonx.xsd" xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <json:object name="primaryAddress">
    <json:string name="streetAddress">21 2nd Street</json:string>
    <json:string name="city">New York</json:string>
    <json:string name="state">NY</json:string>
    <json:number name="postalCode">10021</json:number>
  </json:object>
  <json:object name="secondaryAddress">
    <json:string name="streetAddress">412 Brooklyn Avenue</json:string>
    <json:string name="city">New York</json:string>
    <json:string name="state">NY</json:string>
    <json:number name="postalCode">10021</json:number>
  </json:object>
</json:object>]
이전 JSONx 구조에서 "streetAddress" 요소를 수정하려면 XPath 표현식이 다음과 같습니다. //*[@name='streetAddress']

여기서 표현식의 컴포넌트는 다음 의미를 갖습니다.

표 3. 표현과 의미
표현식 의미
//* 구조의 모든 곳에서 요소를 찾음
[@name='streetAddress'] 이 요소에는 "streetAddress" 값을 가진 'name' 특성이 있음
이 XPath 표현식을 적용한 결과 발생한 JSON 응답은 다음과 같습니다.
{
  "primaryAddress": {
    "streetAddress": "*******",			
    "city": "New York",
    "state": "NY",
    "postalCode": 10021
  },
  "secondaryAddress": {
    "streetAddress": "*******",			
    "city": "New York",
    "state": "NY",
    "postalCode": 10021
  }
}
참고: 앞의 JSON 구조에서 "streetAddress" "의 모든 인스턴스가 삭제되었습니다.

"streetAddress" 요소의 특정 항목을 수정하려면 XPath 표현식이 다음과 같습니다. //*[@name='secondaryAddress']/*[@name='streetAddress']

여기서 표현식의 컴포넌트는 다음 의미를 갖습니다.

[표 4] 표현과 의미
표현식 의미
//* 구조의 모든 곳에서 요소를 찾음
//*[@name='secondaryAddress'] 구조의 모든 곳에서 "secondaryAddress" 이름의 요소를 찾음
//*[@name='secondaryAddress']/*[@name='streetAddress'] 하위 요소의 이름이 "streetAddress"인 모든 유형의 하위 요소(/*)를 찾음
이 XPath 표현식을 적용한 결과 발생한 JSON 응답은 다음과 같습니다.
{
  "primaryAddress": {
    "streetAddress": "21 2nd Street",		
    "city": "New York",
    "state": "NY",
    "postalCode": 10021
  },
  "secondaryAddress": {
    "streetAddress": "*******",			
    "city": "New York",
    "state": "NY",
    "postalCode": 10021
  }
}
주: 보조 주소의 상세 주소만 교정되었습니다.

다음에 수행할 작업

XPath를 사용하여 정책을 redact 적용하는 방법은 “ OpenAPI 2.0 API 어셈블리에 요소 포함하기” 및 “ OpenAPI 2.0 API 어셈블리에 요소 포함하기” 문서를 참조하십시오.