가변 프레임워크

이 그림은 변수 프레임워크가 여러 단계에 걸쳐 다양한 정책의 변수에 액세스하는 데 어떻게 사용되는지 보여줍니다.

가변 배치
참고: 페이로드가 스트림으로 전송되는 경우 요청 또는 응답 페이로드에 액세스하는 모든 변수는 변수 프레임워크에서 사용할 수 없습니다.

다음 표에는 변수 구문을 정의하는 데 사용되는 키워드가 요약되어 있습니다:

가변 키워드 설명
paramStage 시스템 정의 정책의 단계를 정의합니다. 가능한 값은 다음과 같습니다.
  • request
  • response
paramType 요청 또는 응답의 특정 매개변수를 정의합니다. 가능한 값은 다음과 같습니다.
  • payload
  • headers
  • query
  • path
  • httpMethod
  • statusCode
  • statusMessage
queryType 페이로드와 같은 문자열 요소에 적용할 수 있는 쿼리를 정의합니다. 가능한 값은 다음과 같습니다.
  • xpath
  • jsonPath
  • regex

요청 또는 응답 단계에서 사용할 수 있는 변수 유형은 다음과 같습니다:

  • ${paramStage.paramType}

    이 구문을 사용하여 다음 문자열 변수에 액세스할 수 있습니다: path, statusCode, statusMessage, httpMethod.

    예시: ${request.path}, ${response.statusCode}

  • ${paramStage.paramType.paramName}

    이 구문을 사용하여 쿼리, 헤더 및 경로와 같은 맵 유형에 액세스할 수 있습니다.

    예제: ${request.query.var1}, ${response.header.Content-Type}, ${request.path.name}.

  • ${paramStage.paramType.queryType[queryValue]}

    이 구문을 사용하여 페이로드에 액세스할 수 있습니다. 예:

  • ${request.payload.xpath[//ns:emp/ns:empName]}

    여기서 //ns:emp/ns:empName 은 페이로드에 적용될 XPath( contentType 이 application/xml, text/xml 또는 text/html인 경우)입니다.

  • ${response.payload.jsonPath[$.cardDetails.number]}

    여기서 $.cardDetails.number 는 페이로드에 적용될 jsonPath 이며 contentType 는 application/json 또는 application/json/badgerfish입니다.

  • ${request.payload.regex[[0-9]+]}

    여기서 [0-9]+ 은 페이로드에 적용할 정규식( contentType 이 텍스트/일반인 경우)입니다.

  • ${request.isSoapToRest} 또는 ${response.isSoapToRest}

    이 변수는 현재 호출이 SOAP API에 대한 REST 호출인 경우 True를 반환합니다. 그렇지 않으면 False를 반환합니다.

    참고: xpathjsonPath 은 페이로드에만 적용되지만 regExpayloadpath 모두에 사용할 수 있습니다.
  • ${paramStage[stepName].paramType.paramName]}

    이 구문을 사용하여 요청 또는 응답 단계에서 헤더 또는 페이로드에 액세스할 수 있습니다.

    변수: ${response.headers.id}

    값: ${response[customExtension].payload.jsonPath[$.id]}

    이 변환은 응답에 id라는 이름의 헤더를 추가하며, 해당 값은 JSON 경로에 따라 외부 콜아웃에서 전송되는 JSON 페이로드에서 파생됩니다.

다음 섹션에서는 기존의 사전 정의된 시스템 컨텍스트와 사용자 정의 컨텍스트 변수 외에 webMethods API Gateway 변수 프레임워크 템플릿에서 기존의 사전 정의된 시스템 컨텍스트 및 사용자 지정 컨텍스트 변수에 추가하여 사용할 수 있는 변수에 대해 설명합니다:

요청 변수

요청 처리 단계에서 값을 추출하여 재사용할 수 있는 변수입니다.

변수 구문 설명
${request.headers.NAME}

예:${request.headers.Content-Type}

요청의 헤더 이름 값을 가져옵니다.
${request.query.NAME}

예:${request.query.var1}

요청에 포함된 쿼리 이름의 값을 가져옵니다.
${request.path} 요청에 포함된 경로의 값을 가져옵니다.
${request.path.regex[EXPR]}

예:${request.path.regex[0]}

요청에 포함된 경로의 값을 가져옵니다.
${request.httpMethod} 요청의 메소드를 가져옵니다.
${request.payload.xpath[EXPR]}

예:${request.payload.xpath[//ns:emp/ns:empName]}, 여기서 //ns:emp/ns:empName 은 페이로드에 적용될 xpath( contentType 이 application/xml인 경우)입니다

요청 경로에 xpath 표현식을 적용한 후 값을 가져옵니다.
참고: xpath 식에 구성한 접두사의 네임스페이스 URI는 정책의 메타데이터 섹션에 구성된 네임스페이스 또는 사용자 지정 확장 정책의 XpathNamespaces 사용자 지정 변수를 통해 구성된 네임스페이스를 사용하여 확인됩니다.
.
${request.payload.jsonPath[EXPR]}

예: ${request.payload.jsonPath[$.cardDetails.number]} 여기서 $.cardDetails.number는 페이로드에 적용될 jsonPath ( contentType 이 application/json인 경우)입니다

요청 경로에 json 표현식을 적용한 후 값을 가져옵니다.
${request.payload.regex[EXPR]}

예: ${request.payload.regex[[0-9]+]} 여기서 [0-9]+는 콘텐츠 유형이 텍스트/일반인 경우 페이로드에 적용될 정규식입니다

요청 경로에 정규식을 적용한 후 값을 가져옵니다.
${request.authorization.clientId} 구성된 IAM 정책에 의해 권한 부여 헤더에서 식별된 클라이언트 ID의 값을 가져옵니다. 이 값은 관련 IAM 정책이 구성된 경우에만 사용할 수 있습니다.
${request.authorization.issuer} 구성된 IAM 정책에 의해 권한 부여 헤더에서 식별된 발급자의 값을 가져옵니다. 이 값은 관련 IAM 정책이 구성된 경우에만 사용할 수 있습니다.
${request.authorization.userName} 구성된 IAM 정책에 의해 권한 부여 헤더에서 식별된 사용자 이름 값을 가져옵니다. 이 값은 관련 IAM 정책이 구성된 경우에만 사용할 수 있습니다.
${request.authorization.authHeader} 구성된 IAM 정책에 따른 권한 부여 헤더의 값을 가져옵니다. 이 값은 관련 IAM 정책이 구성된 경우에만 사용할 수 있습니다.
${request.authorization.apiKey} 구성된 IAM 정책에 따라 권한 부여 헤더에서 API 키의 값을 가져옵니다. 이 값은 관련 IAM 정책이 구성된 경우에만 사용할 수 있습니다.
${request.authorization.incomingToken} 구성된 IAM 정책에 따라 권한 부여 헤더에서 들어오는 토큰의 값을 가져옵니다. 이 값은 관련 IAM 정책이 구성된 경우에만 사용할 수 있습니다.
${request.authorization.audience} 구성된 IAM 정책에 따라 권한 부여 헤더에서 대상의 값을 가져옵니다. 이 값은 관련 IAM 정책이 구성된 경우에만 사용할 수 있습니다.
${request.authorization.claims.CLAIM_NAME}

예:${request.authorization.claims.emp.company}

구성된 IAM 정책에 의해 권한 부여 헤더에서 식별된 클레임에서 클레임 이름 값을 가져옵니다. 이 값은 관련 IAM 정책이 구성된 경우에만 사용할 수 있습니다.
${request.correlationID} 이 요청에 대한 상관관계 ID를 가져옵니다.
${request.application.id} 이 요청에 대해 식별된 애플리케이션의 ID를 가져옵니다.
${request.application.name} 이 요청에 대해 식별된 애플리케이션의 이름을 가져옵니다.
${request.application.version} 이 요청에 대해 식별된 애플리케이션의 버전 ID를 가져옵니다.
${request.application.claims.CLAIM_NAME}

예제:${request.application.claims.sample}

이 요청에 대해 식별된 애플리케이션에 구성된 클레임 식별자에 대한 클레임 이름 값을 가져옵니다.
${request.application.partnerId} 이 요청에 대해 식별된 애플리케이션의 파트너 ID를 가져옵니다.
${request.application.description} 이 요청에 대해 식별된 애플리케이션의 설명을 가져옵니다.
${request.application.hostname[NUMBER]}

예:${request.application.hostname[0]}

이 요청에 대해 식별된 애플리케이션의 지정된 인덱스에서 호스트 이름 식별자 값을 가져옵니다.
${request.application.payloadIdentifier[NUMBER]}

예제:${request.application.payloadIdentifier[1]}

이 요청에 대해 식별된 애플리케이션의 지정된 인덱스에서 페이로드 식별자 값을 가져옵니다.
${request.application.team[NUMBER]}

예:${request.application.team[0]}

이 요청에 대해 식별된 애플리케이션의 지정된 인덱스에서 팀 식별자 값을 가져옵니다.
${request.application.token[NUMBER]}

예:${request.application.token[1]}

이 요청에 대해 식별된 애플리케이션의 지정된 인덱스에 있는 토큰 식별자 값을 가져옵니다.
${request.application.username[NUMBER]}

예:${request.application.username[0]}

이 요청에 대해 식별된 애플리케이션의 지정된 인덱스에 있는 사용자 이름 식별자 값을 가져옵니다.
${request.application.wssUsername[NUMBER]}

예:${request.application.wssUsername[0]}

이 요청에 대해 식별된 애플리케이션의 지정된 인덱스에서 wssUsername 식별자 값을 가져옵니다.
${request.application.headers.HEADER_NAME}

예:${request.application.headers.Accept}

이 요청에 대해 식별된 애플리케이션에 구성된 헤더 식별자에 대한 헤더 이름 값을 가져옵니다.
${request.payload.native.xpath[EXPR]} SOAP에서 REST 컨텍스트에서 이 변수는 네이티브 API로 전송할 SOAP 요청을 반환합니다

응답 변수

응답 처리 단계에서 값을 추출하여 재사용할 수 있는 변수입니다.

변수 구문 설명
${response.headers.NAME}

예시: ${response.headers.Accept}

응답의 헤더 이름 값을 가져옵니다.
${response.statusCode} 응답의 상태 코드 값을 가져옵니다.
${response.statusMessage} 요청에 포함된 경로의 값을 가져옵니다.
${response.payload.xpath[EXPR]} :

예: ${response.payload.xpath[//ns:emp/ns:empName]} 여기서 //ns:emp/ns:empName 은 페이로드에 적용될 xpath( contentType 이 application/xml인 경우)입니다

응답의 지정된 xpath에서 페이로드 값을 가져옵니다.
참고: xpath 식에 구성한 접두사의 네임스페이스 URI는 정책의 메타데이터 섹션에 구성된 네임스페이스 또는 사용자 지정 확장 정책의 XpathNamespaces 사용자 지정 변수를 통해 구성된 네임스페이스를 사용하여 확인됩니다.
${response.payload.jsonPath[EXPR]}

예:

${response.payload.jsonPath[$.cardDetails.number]} 여기서 $.cardDetails.번호는 페이로드에 적용될 jsonPath ( contentType 이 application/json인 경우) 입니다
응답의 지정된 jsonPath 에서 페이로드 값을 가져옵니다.
${response.payload.regex[EXPR]}

예: ${response.payload.regex[[0-9]+]} 여기서 [0-9]+는 페이로드에 적용할 정규식이며 contentType 이 텍스트/평면인 경우입니다

응답의 지정된 정규식에서 페이로드 값을 가져옵니다.
${response.payload.native.xpath [EXPR]} SOAP에서 REST 컨텍스트에서 이 변수는 네이티브 SOAP API가 반환하는 네이티브 SOAP 응답을 반환합니다.

webMethods API Gateway 는 JSON 경로의 배열 표현식을 평가하고 지원합니다.

예시: 다음 페이로드를 예로 들어보겠습니다.

{}

(
{ "firstName":"John", 
"lastName":"doe", 
"age":26, 
"address": 
{"streetAddress":"naist street","city":"Nara","postalCode":"630-0192"}, 
"phoneNumbers": [
{"type":"iPhone","number":"0123-4567-8888"},
{"type":"home","number":"0123-4567-8910"}
]
}

다음은 JSON 경로에서 배열 표현식을 평가한 후 표현식에 대한 응답입니다.

표현식 응답
$.phoneNumbers[1].type "home"
$.phoneNumbers[0,1].type or $.phoneNumbers[:2].type ["iPhone","home"]
$.phoneNumbers[0,1] or $.phoneNumbers[:2] [{"type":"iPhone","number":"0123-4567-8888"}\{"type":"home","number":"0123-4567-8910"}]
$..firstName ["John"]
$.firstName "John"
$.address.city "Nara"

시스템 컨텍스트 변수

webMethods API Gateway 는 미리 정의된 시스템 컨텍스트 변수를 제공하며 이러한 변수 값은 클라이언트 요청에서 추출됩니다.

표현식 응답
${apiId} API ID의 값을 가져옵니다.
${apiName} API의 이름을 가져옵니다.
${apiVersion} API 버전을 확인하세요.
${packageId} 패키지 ID의 값을 가져옵니다.
${planId} 요금제 ID의 값을 가져옵니다.
${customTransactionFields.FIELD_NAME}

예:${customTransactionFields.sample}

이 요청에 대한 트랜잭션 이벤트에 사용자 지정 필드를 가져오거나 설정할 수 있는 옵션을 제공합니다. 사용자 정의 필드를 설정하려면 사용자 정의 확장자 정책에서 customTransactionFields.FIELD_NAME 사용자 정의 변수를 구성하면 됩니다.
${providerTime} 이 트랜잭션에 대해 네이티브 서버로 보낸 요청과 네이티브 서버로부터 받은 응답 사이에 걸린 시간(밀리초)을 가져옵니다.
${date} 요청이 호출된 날짜를 가져옵니다.
${dynamicEndpoint} 다음을 사용하여 설정된 ROUTING_ENDPOINT 컨텍스트 변수 값을 가져옵니다 pub.apigateway.ctxvar:setContextVariable
${time} 요청이 호출된 시간을 가져옵니다.
${inboundHttpMethod}

예:GET

클라이언트가 요청을 전송하는 데 사용한 HTTP 메서드의 값을 가져옵니다.
${routingMethod}

예:POST

라우팅 정책에서 네이티브 API로 요청을 보내기 위해 사용하는 HTTP 메서드의 webMethods API Gateway 에서 네이티브 API로 요청을 전송하는 데 사용하는 메서드의 값을 가져옵니다.
${InboundContentType}

예:application/json

요청의 콘텐츠 유형을 가져옵니다.
${inboundAccept}

예:*/

클라이언트로부터 들어오는 요청의 수락 헤더를 가져옵니다.
${inboundProtocol} 요청의 프로토콜을 가져옵니다.
${inboundRequestURI}

예를 들어 API가 http://hostname/gateway/API 호출되는 경우 이 변수의 예상 값은 /gateway/API가 됩니다. REST API의 경우 URL 에도 쿼리 문자열 매개변수가 포함되어 있습니다.

예를 들어 다음 API가 호출되는 경우: http://hostname/gateway/cars?vin=1234 이 변수의 예상 값은 /gateway/cars?vin1234 입니다.

API \( HTTP 및 HTTPS 전용\)에 대한 부분 참조입니다. 프로토콜, 호스트 및 포트는 값의 일부가 아닙니다.
${inboundIP}

예:210.178.9.0

요청을 보내는 데 사용된 클라이언트 IP 주소의 값을 가져옵니다.
${gatewayIP}

예:198.168.1.9

Gets webMethods API Gateway IP 주소.
${operationName}

예:addInts

요청에서 선택한 API 작업의 값을 가져옵니다. 작업 이름은 SOAP API에만 사용할 수 있습니다. REST API의 경우 비어 있습니다.
${nativeEndpoint}

예:http://hostname/Service

요청에서 네이티브 엔드포인트의 값을 가져옵니다. 라우팅 정책을 실행한 후에만 값을 반환합니다.
참고: ${gatewayHostname} 은 다음에서 지원되지 않으므로 제거되었습니다 webMethods API Gateway Cloud.

가변 프레임워크 지원 개선 사항

까지 webMethods API Gateway 버전( 10.5 )까지 가변 프레임워크는 API 매시업, 요청 변환, 응답 변환, 조건부 오류 처리 및 사용자 정의 확장 정책에서 지원되었습니다.

에서 webMethods API Gateway 버전 10.11 에서는 기존 변수 프레임워크가 다음과 같은 사용 사례를 지원하도록 개선되었습니다:

  • 가변 프레임워크를 사용하여 모든 단계에서 간단한 별칭에 액세스할 수 있습니다. 예: $ {simpleAlias}.
  • 이제 변수 프레임워크를 사용하여 기존 사용자 지정 및 시스템 컨텍스트 변수에 액세스할 수 있습니다. 변수 프레임워크의 일부로 ctxVar IS 서비스를 사용하여 정의한 사용자 지정 컨텍스트 변수가 사용자 지정 변수로 병합됩니다. 변수 프레임워크를 사용하여 시스템 컨텍스트 변수 또는 사용자 정의 컨텍스트 변수에 액세스하는 구문은 사용자 정의 변수와 유사합니다. 예: $ {variableName\}. API Gateway 버전 10.5 에서 시스템 및 사용자 정의 컨텍스트 변수를 선언하는 방법에 대한 자세한 내용은 변수 프레임워크 를 참조하십시오.
    참고: 이전 버전의 webMethods API Gateway 를 사용하여 사용자 지정 컨텍스트 변수 또는 사용자 지정 변수를 정의하고 액세스할 수도 있습니다( ctxVar IS 서비스). 자세한 내용은 컨텍스트 변수를 위한 API를 참조하세요
  • 변수를 지원하는 모든 정책 매개변수에서 시스템 컨텍스트 변수와 사용자 지정 변수 \(사용자 지정 컨텍스트 변수 포함\) 모두 액세스할 수 있습니다.