요청 전달
적용 대상: 모든 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>
관련 정책
관련 콘텐츠
정책 작업에 대한 자세한 내용은 다음을 참조하세요.
- 자습서: API 변환 및 보호
- 정책 문 및 해당 설정에 대한 전체 목록에 대한 정책 참조
- 정책 식
- 정책 설정 또는 편집
- 정책 구성 재사용
- 정책 코드 조각 리포지토리
- Azure API Management 정책 도구 키트
- Azure의 Microsoft Copilot을 사용하는 작성자 정책