스트리밍 요청 및 응답

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

이 주제의 과정 내용

이 주제에서 학습할 내용은 다음과 같습니다.

  • Apigee에서 요청 및 응답 스트리밍에 대한 정보
  • 요청 및 응답 스트리밍을 사용해야 하는 경우
  • 요청 및 응답 스트리밍을 사용 설정하는 방법

요청 및 응답 스트리밍 정보

기본적으로 HTTP 스트리밍은 사용 중지되며 HTTP 요청 및 응답 페이로드는 API 프록시 파이프라인에서 처리되기 전에 메모리의 버퍼에 기록됩니다. 스트리밍을 사용 설정하여 이 동작을 변경할 수 있습니다. 스트리밍이 사용 설정되면 클라이언트 앱(응답의 경우) 및 대상 엔드포인트(요청의 경우)가 수정되지 않고 요청 및 응답 페이로드가 스트리밍됩니다.

스트리밍은 언제 사용 설정해야 하나요?

API 프록시가 대규모 요청 및 응답을 처리하는 경우(크기 제한의 경우 아래의 스트리밍에 대해 알아야 할 기타 사항 참조) 스트리밍을 사용 설정할 수 있습니다.

스트리밍에 대해 알아야 할 기타 사항은 무엇인가요?

메시지 페이로드 크기는 10MB로 제한됩니다. 스트리밍되지 않은 요청 및 응답에서 크기를 초과하면 protocol.http.TooBigBody 오류가 발생합니다.

인코딩된 데이터

스트리밍이 사용 설정되면 Apigee는 요청 또는 응답 페이로드를 Apigee 또는 백엔드 대상 서버에 연결하는 클라이언트로 전송하기 전에 인코딩 또는 디코딩하지 않습니다. 자세한 내용은 TargetEndpoint 전송 속성 사양 테이블의 request.streaming.enabledresponse.streaming.enabled에 대한 행을 참조하세요.

요청 및 응답 스트리밍을 사용 설정하는 방법

요청 스트리밍을 사용 설정하려면 프록시 번들의 ProxyEndpoint 및 TargetEndpoint 정의에 request.streaming.enabled 속성을 추가하고 true로 설정해야 합니다. 마찬가지로 response.streaming.enabled 속성을 설정하여 응답 스트리밍을 사용 설정합니다.

이러한 구성 파일은 프록시의 개발 뷰에 있는 Apigee UI에서 찾을 수 있습니다. 로컬에서 개발하는 경우 이러한 정의 파일은 apiproxy/proxiesapiproxy/targets에 있습니다.

이 샘플은 TargetEndpoint 정의에서 요청 및 응답 스트리밍 모두를 사용 설정하는 방법을 보여줍니다.

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
      <Property name="supports.http10">true</Property>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

이 예시에서는 ProxyEndpoint 정의에서 응답 및 요청 스트리밍 모두를 사용 설정하는 방법을 보여줍니다.

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="allow.http10">true</Property>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
  </HTTPProxyConnection>
</ProxyEndpoint>

엔드포인트 정의 구성에 대한 자세한 내용은 엔드포인트 속성 참조를 확인하세요.

관련 코드 샘플

GitHub의 API 프록시 샘플은 쉽게 다운로드하고 사용할 수 있습니다.

스트리밍 기능을 갖춘 샘플 프록시는 다음과 같습니다.

  • 스트리밍 - HTTP 스트리밍용으로 구성된 API 프록시를 보여줍니다.
  • Edge 콜아웃: 서명된 URL 생성기 - 요청/응답에서 스트리밍하는 대신 대용량 파일에 액세스하도록 서명된 URL을 생성하는 권장사항을 설명합니다.