요청 전달

적용 대상: 모든 API Management 계층

forward-request 정책은 들어오는 요청을 요청 컨텍스트에 지정된 백 엔드 서비스에 전달합니다. 백 엔드 서비스 URL이 API 설정에 지정되며 백 엔드 서비스 설정 정책을 사용하여 변경할 수 있습니다.

Important

  • 이 정책은 요청을 API 백 엔드로 전달하는 데 필요합니다. 기본적으로 API Management는 전역 범위에서 이 정책을 설정합니다.
  • 이 정책을 제거하면 요청이 백 엔드 서비스로 전달되지 않습니다. 아웃바운드 섹션의 정책은 인바운드 섹션의 정책이 성공적으로 완료되는 즉시 평가됩니다.

참고 항목

정책 문에 제공된 순서대로 정책의 요소 및 자식 요소를 설정합니다. API Management 정책을 설정하거나 편집하는 방법에 대해 자세히 알아봅니다.

정책 문

<forward-request http-version="1 | 2or1 | 2" timeout="time in seconds (alternatively, use timeout-ms)" | timeout-ms="time in milliseconds (alternatively, use timeout)" continue-timeout="time in seconds" follow-redirects="false | true" buffer-request-body="false | true" buffer-response="true | false" fail-on-error-status-code="false | true"/>

특성

특성 설명 필수 항목 기본값
시간 제한 시간 제한 오류가 발생하기 전에 백 엔드 서비스에서 HTTP 응답 헤더가 반환될 때까지 대기하는 시간(초)입니다. 최솟값은 0초입니다. 기본 네트워크 인프라가 이 시간 이후에 유휴 연결을 삭제할 수 있기 때문에 240초보다 큰 값은 적용할 수 없습니다. 정책 식이 허용됩니다. timeout 또는 timeout-ms를 지정할 수 있지만 둘 다 지정할 수는 없습니다. 아니요 300
timeout-ms 시간 제한 오류가 발생하기 전에 백 엔드 서비스에서 HTTP 응답 헤더가 반환될 때까지 대기하는 시간(밀리초)입니다. 최솟값은 0ms입니다. 정책 식이 허용됩니다. timeout 또는 timeout-ms를 지정할 수 있지만 둘 다 지정할 수는 없습니다. 아니요 해당 없음
continue-timeout 시간 제한 오류가 발생하기 전에 백 엔드 서비스에서 100 Continue 상태 코드가 반환될 때까지 대기하는 시간(초)입니다. 정책 식이 허용됩니다. 아니요 해당 없음
http-version 백 엔드 서비스에 HTTP 응답을 보낼 때 사용할 HTTP 사양 버전입니다. 2or1을 사용하는 경우 게이트웨이는 /1보다 HTTP /2를 선호하지만 HTTP /2가 작동하지 않으면 HTTP /1로 대체됩니다. 아니요 1
follow-redirects 백 엔드 서비스의 리디렉션 뒤에 게이트웨이가 있는지 또는 호출자에게 반환되는지 여부를 지정합니다. 정책 식이 허용됩니다. 아니요 false
buffer-request-body true로 설정하면 요청이 버퍼링되고 다시 시도할 때 다시 사용됩니다. 아니요 false
buffer-response 청크 응답 처리에 영향을 미칩니다. false로 설정하면 백 엔드에서 받은 각 청크가 호출자에게 즉시 반환됩니다. true로 설정하면 청크가 버퍼링되고(스트림의 끝이 검색되지 않는 한 8KB) 호출자에게만 반환됩니다.

콘텐츠를 호출자에게 즉시 반환하거나 스트림해야 하는 SSE(서버 전송 이벤트)를 구현하는 것과 같은 백 엔드를 사용하여 false로 설정합니다. 정책 식은 허용되지 않습니다.
아니요 true
fail-on-error-status-code true로 설정하면 400~599(포함) 범위의 응답 코드에 대해 오류 발생 시 섹션이 트리거됩니다. 정책 식은 허용되지 않습니다. 아니요 false

사용

예제

HTTP/2 백 엔드에 요청 보내기

다음 API 수준 정책은 모든 API 요청을 HTTP/2 백 엔드 서비스로 전달합니다.

<!-- api level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request http-version="2or1"/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

이는 HTTP /2 또는 gRPC 워크로드에 필요하며 현재 자체 호스팅 게이트웨이에서만 지원됩니다. API 게이트웨이 개요에서 자세히 알아보세요.

시간 제한 간격으로 요청 전달

다음 API 레벨 정책은 60초의 시간 초과 간격으로 모든 API 요청을 백 엔드 서비스로 전달합니다.

<!-- api level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

부모 범위에서 정책 상속

이 작업 수준 정책은 base 요소를 사용하여 상위 API 수준 범위에서 백 엔드 정책을 상속합니다.

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <base/>
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

부모 범위에서 정책 상속하지 않음

이 작업 수준 정책은 120의 시간 초과로 모든 요청을 백 엔드 서비스로 명시적으로 전달하며 상위 API 수준 백 엔드 정책을 상속하지 않습니다. 백 엔드 서비스가 400~599(포함)의 오류 상태 코드로 응답하면 오류 발생 시 섹션이 트리거됩니다.

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <forward-request timeout="120" fail-on-error-status-code="true" />
        <!-- effective policy. note the absence of <base/> -->
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

백 엔드에 요청 전달 안 함

이 작업 수준 정책은 요청을 백 엔드 서비스로 전달하지 않습니다.

<!-- operation level -->
<policies>
    <inbound>
        <base/>
    </inbound>
    <backend>
        <!-- no forwarding to backend -->
    </backend>
    <outbound>
        <base/>
    </outbound>
</policies>

정책 작업에 대한 자세한 내용은 다음을 참조하세요.