このページの内容は Apigee と Apigee ハイブリッドに該当します。
Apigee Edge のドキュメントを表示する。
このトピックで説明する内容
このトピックを読むと、次の内容を理解できます。
- Apigee でのリクエストとレスポンスのストリーミング
- リクエストとレスポンスのストリーミングを使用すべき状況
- リクエストとレスポンスのストリーミングを有効にする方法
リクエストとレスポンスのストリーミングとは
デフォルトでは HTTP ストリーミングは無効です。HTTP リクエストおよびレスポンスのペイロードは、メモリ内のバッファに書き込まれてから、API プロキシ パイプラインによって処理されます。この動作は、ストリーミングを有効にすることで変更できます。ストリーミングを有効にすると、リクエストとレスポンスのペイロードは変更されずに、クライアント アプリ(レスポンスの場合)やターゲット エンドポイント(リクエストの場合)にストリーミングされます。
ストリーミングを有効にすべき状況
API プロキシが非常に大きなリクエストやレスポンス(サイズ上限については、ストリーミングについて他に知っておくべきことを参照)を処理する場合は、ストリーミングを有効にすることが必要になる場合があります。
ストリーミングについて他に知っておくべきこと
メッセージ ペイロードのサイズは、10 MB に制限されています。ストリーミングされていないリクエストとレスポンスでは、そのサイズを超えると protocol.http.TooBigBody
エラーが発生します。
エンコードされたデータ
ストリーミングが有効になっている場合、Apigee は、Apigee またはバックエンド ターゲット サーバーに接続するクライアントに送信する前に、リクエストまたはレスポンスのペイロードをエンコードまたはデコードしません。詳細については、TargetEndpoint トランスポート プロパティの仕様の表にある request.streaming.enabled
と response.streaming.enabled
の行をご覧ください。
リクエストとレスポンスのストリーミングを有効にする方法
リクエストのストリーミングを有効にするには、プロキシ バンドルの ProxyEndpoint 定義と TargetEndpoint 定義に request.streaming.enabled
プロパティを追加し、true
に設定する必要があります。同様に、response.streaming.enabled
プロパティを設定して、レスポンスのストリーミングを有効にします。
これらの構成ファイルの場所は、プロキシの Apigee UI の [Develop] ビューで確認できます。ローカルで開発している場合、定義ファイルは apiproxy/proxies
と apiproxy/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 を生成する方法を説明します。