invoke

invoke 정책을 사용하여 API를 호출하십시오.

게이트웨이 지원

제한사항: Authorization 요청 헤더를 포함하는 요청을 캐시할 수 없습니다.
표 1. 이 정책을 지원하는 게이트웨이와 해당 정책 버전을 보여주는 표
게이트웨이 정책 버전
DataPower® Gateway (v5 compatible) 1.0.0
DataPower API Gateway 2.0.0

2.1.0 (DataPower API Gateway 버전 10.0.1.1 이상)

2.2.0 (DataPower API Gateway 버전 10.0.2.0 이상)

2.3.0 ( DataPower API Gateway 버전 10.0.3.0 이상)

이 항목에서는 OpenAPI 소스에서 정책을 구성하는 방법을 설명합니다. 어셈블리 사용자 인터페이스에서 정책을 구성하는 방법에 대한 자세한 내용은 ‘Invoke’를 참조하십시오.

정보

invoke 정책의 형식은 다음과 같습니다.
- invoke:
  version: version
  title: title
  description: description
  target-url: URL_of_target_API
  backend-type: how_payload_is_sent_to_backend
  tls-profile: TLS_profile_to_be_used
  verb: method_type
  timeout: timeout_value_in_seconds
  compression: is_data_to_be_compressed
  username: username_if_authentication_required
  password: password_if_authentication_required
  output: location_of_the_invoke_result
  cache-key: unique_identifier_of_the_document_cache_entry
  cache-response: cache_behavior
  cache-putpost-response: response_caching_behavior
  cache-ttl: cache_time_to_live
  inject-proxy-headers: are_proxy_headers_sent_to_target_url
  decode-request-params: are_request_parameters_decoded
  encode-plus-char: are_plus_characters_encoded
  keep-payload: is_payload_sent_on_delete
  use-http-10: are_transactions_restricted_to_http_1.0
  chunked-uploads: are_chunked_encoded_documents_sent_to_the_server
  persistent-connection: are_persistent_connections_enabled
  header-control:
        .
        .
        .
    headers_to_copy_to_target_url
        .
        .
        .
  parameter-control:
        .
        .
        .
    parameters_to_copy_to_target_url
        .
        .
        .
  follow-redirects: url_redirection_behavior
  stop-on-error: errors_that_stop_the_flow

특성

다음 표에서는 호출 정책의 특성에 대해 설명합니다.
표 2. 정책 속성 호출
특성 필수 설명 데이터 유형
version 정책 버전 번호입니다. 문자열
title 아니오 정책의 제목입니다. 문자열
description 아니오 정책에 대한 설명입니다. 문자열
target-url 대상 API의 URL입니다.
참고:

호출 정책의 target-url 필드에 경로 또는 쿼리 매개 변수를 수동으로 추가하지 마세요. 이러한 매개변수가 API 작업에서 정의된 경우 API Connect 는 런타임에 대상 URL 에 해당 매개변수를 삽입합니다.

$(request.search) 또는 경로 세그먼트와 같은 값을 수동으로 추가하면 중복 또는 잘못된 URL이 생성될 수 있으므로 주의하세요. 이 parameter-control 정책을 사용하여 쿼리 매개변수 포함 여부를 관리하십시오.

문자열
DataPower API Gateway
onlybackend-type 아니오 다음 값 중 하나를 지정하여 백엔드에 페이로드를 전송하는 방법을 판별하십시오.
  • detect: 메시지 유형을 탐지하고 적절히 백엔드에 페이로드를 전송합니다.
  • xml: 페이로드를 XML로 패키지하여 전송합니다. 메시지 유형이 XML이 아닌 경우 오퍼레이션에 실패합니다.
  • json: 페이로드를 JSON으로 패키지하여 전송합니다. 메시지 유형이 JSON이 아닌 경우 오퍼레이션에 실패합니다.
  • binary: 메시지 유형에 관계 없이 페이로드를 2진으로 패키징하여 전송합니다.
  • graphql: 페이로드를 GraphQL로 패키지하여 전송합니다. 메시지 유형이 GraphQL이 아닌 경우 오퍼레이션에 실패합니다.

기본값은 detect입니다.

문자열
DataPower API Gateway
onlygraphql-send-type(정책 버전 2.2.0 및 이후 버전) 예, backend-typegraphql 또는 detect로 설정되고 verbPOST 또는 keep로 설정된 경우. GraphQL 페이로드가 백엔드에 전송되는 방법을 판별하려면 다음 값 중 하나를 지정하십시오.
  • detect: 메시지 유형을 감지하고 적절하게 페이로드를 백엔드에 보냅니다.
  • graphql: 페이로드를 GraphQL로 패키지하여 전송합니다. 메시지 유형이 GraphQL이 아닌 경우 오퍼레이션에 실패합니다.
  • json: 페이로드를 JSON으로 패키지하여 전송합니다. 메시지 유형이 GraphQL이 아닌 경우 오퍼레이션에 실패합니다.
참고: graphql-send-typebackend-typegraphql 또는 detect로 설정되고 verbPOST 또는 keep로 설정된 경우에만 지원됩니다.
문자열
tls-profile 아니오 데이터의 보안 전송을 위해 사용할 TLS 프로파일을 지정합니다.
참고: 소스 보기에서 API를 편집하려면 tls-profile 값이 name:version형식을 따르는지 확인하십시오. 예를 들어, nameofmytlsclientprofile:1.0.0와 같아야 합니다.
문자열
verb 아니오

오퍼레이션 메소드 유형입니다.

유효 값:
  • GET
  • POST
  • PUT
  • 삭제
  • 패치
  • 헤드
  • 옵션

기본값은 GET입니다. 그러나 이 특성이 소스에서 제거된 경우 수신 요청의 HTTP 메소드가 사용됩니다.

문자열
timeout 아니오 엔드포인트의 응답을 기다리는 시간입니다(단위: 초).

기본값은 60입니다.

정수
DataPower API Gateway
onlyhttp-version (정책 버전 2.1.0 및 이후 버전) 백엔드 서버에 연결될 때 사용될 HTTP 버전입니다. 유효 값:
  • HTTP/1.0
  • HTTP/1.1
  • HTTP/2
문자열
DataPower API Gateway
onlyhttp2-required (정책 버전 2.1.0 및 이후 버전) 아니오 이 속성을 로 설정하면 서버가 TLS 연결 true 시 HTTP/2 를 선택하도록 강제합니다. 그렇지 않으면 가 DataPower API Gateway 연결을 거부하고 요청이 실패합니다. 비 TLS 연결의 경우, 경고는 요구사항이 적용될 수 없음을 표시하며 로깅됩니다. http-versionHTTP/2로 설정된 경우에만 이 설정이 적용됩니다. 부울
compression 아니오 데이터를 업로드하기 전에 compress를 사용하여 압축할 것인지 여부를 지정합니다. 기본값은 false입니다. 부울
username 아니오 HTTP 기본 인증에 사용할 사용자 이름입니다. 문자열
password 아니오 HTTP 기본 인증에 사용할 비밀번호입니다. 문자열
output 아니오 요청의 응답 데이터를 저장하는 데 사용할 변수의 이름입니다. 기본적으로 본문, 헤더, statusCode, statusMessage인 호출 응답은 message 변수에 저장됩니다. 이 특성을 사용하여 호출 응답을 저장할 대체 위치를 지정하십시오. 이 변수는 map과 같은 다른 액션에서 참조할 수 있습니다.
참고: 응답을 메시지에 저장하려면 output 특성을 공백으로 두고 message값을 제공하지 마십시오 .
문자열

cache-key

아니오 문서 캐시 항목의 고유 ID를 지정합니다. 문자열
DataPower API Gateway
onlywebsocket-upgrade (정책 버전 2.1.0 및 이후 버전) 아니오 이 속성을 true 로 설정하면 DataPower API Gateway 의 해당 HTTP 또는 HTTPS 핸들러가 WebSocket (ws) 또는 WebSocket Secure(wss)를 사용하는 경우 HTTP 또는 HTTPS 연결을 WebSocket 프로토콜로 업그레이드할 수 있습니다.
참고:
  • 이 특성은 GraphQL API에만 사용 가능합니다.
  • websocket-upgrade 특성은 더 이상 사용되지 않습니다. API 처리 데이터를 관리할 수 있는 WebSocket 업그레이드 요청을 허용하려면 어셈블리 WebSocket 업그레이드 정책을 정의하십시오. 자세한 내용은 websocket-upgrade를 참조하십시오.
부울

cache-response

아니오 캐시 응답 유형입니다.
유효 값:
  • protocol: 캐시 동작은 요청 및 응답의 Cache-Control 헤더에서 정의됩니다.
  • no-cache: 캐싱이 없음을 지정합니다. 하지만 문서가 이미 캐시에 있는 경우 캐시에서 문서가 검색됩니다.
  • time-to-live: 지정된 시간 동안 응답이 캐시에 유지되도록 지정합니다.

기본값은 protocol입니다.

문자열
cache-putpost-response 아니오 POST 및 PUT 요청의 응답을 캐시할지 여부를 지정합니다. POST 및 PUT 요청의 응답을 캐시하면 서버 로드를 줄이고 클라이언트 요청에 대한 응답의 대기 시간을 줄일 수 있습니다.

기본값은 false입니다.

부울

cache-ttl

아니오 캐시에서 응답이 유지되는 시간을 지정합니다(단위: 초). cache-response 특성이 time-to-live로 설정된 경우에만 적용됩니다. 5 - 31708800 범위의 값을 입력하십시오.

기본값은 900입니다.

참고: 사용자가 툴킷 로그인 경로(를 포함하는 URL?from=TOOLKIT)를 통해 로그인할 경우, 생성된 API 키의 유효 기간(TTL)은 5분으로 고정됩니다.
정수
DataPower API Gateway
onlyinject-proxy-headers 아니오 true로 설정된 경우 invoke 정책이 target-url에 전송된 요청에 X-Forwarded-For, X-Forwarded-To, X-Forwarded-HostX-Forwarded-Proto 헤더를 삽입합니다.

기본값은 false입니다.

부울
DataPower API Gateway
onlydecode-request-params 아니오 true로 설정된 경우 호출 정책의 target-url에 대한 변수 정의에서 참조되는 요청 매개변수는 URL로 디코딩됩니다.

기본값은 false입니다.

부울
DataPower API Gateway
onlyencode-plus-char 아니오 true로 설정된 경우 target-url의 조회 매개변수 값에 있는 모든 "+" 문자는 %2F로 인코딩됩니다.

기본값은 false입니다.

부울
DataPower API Gateway
onlykeep-payload 아니오 true로 설정된 경우 호출 정책이 HTTP DELETE 메소드에 페이로드를 전송합니다.

기본값은 false입니다.

부울
DataPower API Gateway
onlyuse-http-10 (정책 버전 2.0.0 에만 해당) 아니오 true로 설정되면, HTTP 트랜잭션이 버전 1.0으로 제한됩니다.

기본값은 false입니다.

부울
DataPower API Gateway
onlychunked-uploads 아니오 이 특성을 true로 설정하면 청크 인코딩된 문서는 서버로 전송됩니다. HTTP 1.1 프로토콜이 사용될 때 문서의 본문은 Content-Length 또는 청크 인코딩으로 한계를 설정될 수 있습니다. 모든 서버가 Content-Length를 해석할 수 있는 동안, 많은 애플리케이션은 청크 인코딩된 문서를 이해하는데 실패합니다. 이런 이유로 Content-Length는 표준 메소드입니다.

Content-Length 의 사용은 DataPower Gateway 가 완전히 스트리밍하는 기능을 방해합니다. 전체 문서를 대상 서버로 스트림해야 하는 경우, 이 특성을 사용으로 설정하십시오.

사용으로 설정된 경우, 서버는 RFC 2616 호환 가능이어야 합니다. 런타임 시 협상될 수 있는 기타 모든 HTTP 1.1 기능과 달리, 대상 서버가 RFC 2616 호환 가능함을 미리 알아야 합니다.

기본값은 true입니다.

참고 : 챕터 인코딩은 챕터 인코딩( HTTP ) 1.0 프로토콜에서 지원되지 않습니다.
부울
DataPower API Gateway
onlypersistent-connection (정책 버전 2.3.0 이상) 아니오 true HTTP 을 활성화하려면 이 속성을 persistent connections로 설정하여 연결을 재사용할 수 있도록 하십시오.

기본값은 true입니다.

부울
DataPower API 게이트웨이만 해당됨
header-control:
  type
  values
아니오 대상 URL에 복사할 message.headers의 헤더를 지정합니다.

type 특성이 blocklist로 설정된 경우 values 특성은 복사하지 않을 헤더를 나열합니다. values 특성이 비어 있으면 모든 헤더가 복사됩니다.

type 특성이 allowlist로 설정된 경우 values 특성은 복사할 헤더를 나열합니다.

values 특성에 나열되는 항목은 정규식 형식입니다. 값은 대소문자를 구분하지 않습니다. header-control 특성의 기본값은 다음과 같습니다.
header-control:
  type: blocklist
  values: []

헤더 제어 예제 를 참조하십시오.

오브젝트
DataPower API 게이트웨이만 해당됨
parameter-control:
  type
  values
아니오 대상 URL에 복사할 수신 요청의 매개변수를 지정합니다.

type 특성이 blocklist로 설정된 경우 values 특성은 복사하지 않을 매개변수를 나열합니다.

type 특성이 allowlist로 설정된 경우 values 특성은 복사될 매개변수를 나열합니다. values 특성이 비어 있으면 매개변수가 복사되지 않습니다.

values 특성에 나열되는 항목은 정규식 형식입니다. 값은 대소문자를 구분하지 않습니다. parameter-control 특성의 기본값은 다음과 같습니다.
parameter-control:
  type: allowlist
  values: []

매개변수 제어 예제 를 참조하십시오.

오브젝트
DataPower API Gateway
onlyfollow-redirect 아니오 백엔드 서버가 HTTP 상태 코드를 반환하는 경우의 동작을 지정합니다. 301 Moved Permanently. 이 특성이 true로 설정되면 invoke 정책이 응답의 Location 헤더에 지정된 URL에 대한 추가 호출을 작성하여 URL 경로 재지정을 따릅니다. 이 특성이 false로 설정되면 invoke301 상태 코드를 저장하고 API 호출이 완료된 것으로 간주됩니다.
참고: follow-redirect 특성은 DataPower API Gateway에서만 지원됩니다. 를 DataPower Gateway (v5 compatible)사용하는 경우, 는 invoke 항상 URL 리디렉션을 따릅니다. 반면 (에서는 지원되지 proxyDataPower API Gateway 않음) 정책은 상태 301 코드를 저장하고 URL 리디렉션을 따르지 않은 채 API 호출을 완료합니다.
부울
stop-on-error 아니오 정책 실행 중에 오류가 발생하면 플로우를 중지시키는 오류를 나열합니다. 오류에 대해 구성된 catch 플로우가 있는 경우 발생한 오류를 처리하기 위해 트리거됩니다. 오류가 발생하고 오류 시 중지 특성에 대해 지정된 오류가 없거나 발생한 오류가 지정된 오류 중 하나가 아닌 경우 정책 실행이 완료될 수 있고 어셈블리 플로우가 계속됩니다. 문자열

- invoke:
    version: 2.0.0
    title: get the account status
    target-url: https://example.com/accounts/{id}?status={status}
    cache-response: time-to-live
    cache-putpost-response: true
    tls-profile: MyTLSProfile:1.0.0
    verb: POST
    timeout: 60
    compression: false 
    username: MyUser
    password: MyPassword
    stop-on-error:
      - ConnectionError
      - OperationError

DataPower API 게이트웨이만 해당됨header-control 예시

# copy all headers to the target URL

- invoke:
    target-url: http://myhost/mypath
    header-control:
      type: blocklist
      values: []
# copy all headers except X-Client-ID and Content-Type

- invoke:
    target-url: http://myhost/mypath
    header-control:
      type: blocklist
      values:
        - ^X-Client-ID$
        - ^Content-Type$
# copy no headers

- invoke:
    target-url: http://myhost/mypath
    header-control:
      type: allowlist
      values: []
# copy only the Content-Type header

- invoke:
    target-url: http://myhost/mypath
    header-control:
      type: allowlist
      values:
        - ^Content-Type$

DataPower API 게이트웨이만 해당됨parameter-control 예시

# copy no request parameters to the target URL

- invoke:
    target-url: http://myhost/path?storeid=3
    parameter-control:
      type: allowlist
      values: []
# append the petid parameter to the target URL
# if the incoming request is http://apigw/org/sandbox/petstore/base?petid=100&display=detailed, 
# the target URL at runtime will be http://myhost/mypath?storeid=3&petid=100

- invoke:
    target-url: http://myhost/path?storeid=3
    parameter-control:
      type: allowlist
      values:
        - ^petid$
# The API definition includes a query parameter petid.
# Incoming request: https://apigw/org/sandbox/pets?petid=123
# API Connect will automatically forward petid to the target URL at runtime.

- invoke:
    target-url: https://myhost/pets
    parameter-control:
      type: allowlist
      values:
        - ^petid$