ストリーミングのリクエストとレスポンス

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

このトピックで説明する内容

このトピックを読むと、次の内容を理解できます。

  • Apigee でのリクエストとレスポンスのストリーミング
  • リクエストとレスポンスのストリーミングを使用すべき状況
  • リクエストとレスポンスのストリーミングを有効にする方法

リクエストとレスポンスのストリーミングとは

デフォルトでは HTTP ストリーミングは無効です。HTTP リクエストおよびレスポンスのペイロードは、メモリ内のバッファに書き込まれてから、API プロキシ パイプラインによって処理されます。この動作は、ストリーミングを有効にすることで変更できます。ストリーミングを有効にすると、リクエストとレスポンスのペイロードは変更されずに、クライアント アプリ(レスポンスの場合)やターゲット エンドポイント(リクエストの場合)にストリーミングされます。

ストリーミングを有効にすべき状況

API プロキシが非常に大きなリクエストやレスポンス(サイズ上限については、ストリーミングについて他に知っておくべきことを参照)を処理する場合は、ストリーミングを有効にすることが必要になる場合があります。

ストリーミングについて他に知っておくべきこと

メッセージ ペイロードのサイズは、10 MB に制限されています。ストリーミングされていないリクエストとレスポンスでは、そのサイズを超えると protocol.http.TooBigBody エラーが発生します。

エンコードされたデータ

ストリーミングが有効になっている場合、Apigee は、Apigee またはバックエンド ターゲット サーバーに接続するクライアントに送信する前に、リクエストまたはレスポンスのペイロードをエンコードまたはデコードしません。詳細については、TargetEndpoint トランスポート プロパティの仕様の表にある request.streaming.enabledresponse.streaming.enabled の行をご覧ください。

リクエストとレスポンスのストリーミングを有効にする方法

リクエストのストリーミングを有効にするには、プロキシ バンドルの ProxyEndpoint 定義と TargetEndpoint 定義に request.streaming.enabled プロパティを追加し、true に設定する必要があります。同様に、response.streaming.enabled プロパティを設定して、レスポンスのストリーミングを有効にします。

これらの構成ファイルの場所は、プロキシの Apigee UI の [Develop] ビューで確認できます。ローカルで開発している場合、定義ファイルは 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 Callout: Signed URL Generator - サイズの大きいファイルにアクセスするために、リクエストやレスポンスでそのファイルをストリーミングするのではなく、ベスト プラクティスとして署名付き URL を生成する方法を説明します。