このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge のドキュメントを表示する。
このトピックで説明する内容
このトピックを読むと、次の内容を理解できます。
- Apigee でのリクエストとレスポンスのストリーミング
- リクエストとレスポンスのストリーミングを使用すべき状況
- リクエストとレスポンスのストリーミングを有効にする方法
リクエストとレスポンスのストリーミングとは
デフォルトでは HTTP ストリーミングは無効です。HTTP リクエストおよびレスポンスのペイロードはメモリ内のバッファに書き込まれてから、API プロキシ パイプラインによって処理されます。この動作は、ストリーミングを有効にすることで変更できます。ストリーミングを有効にすると、リクエストとレスポンスのペイロードが変更なしにクライアント アプリ(レスポンスの場合)やターゲット エンドポイント(リクエストの場合)にストリーミングされます。
ストリーミングを有効にすべき状況
API プロキシが非常に大きなリクエストやレスポンス(サイズ上限については、ストリーミングについて他に知っておくべきことを参照)を処理する場合は、ストリーミングを有効にすることが必要になる場合があります。
ストリーミングについて他に知っておくべきこと
メッセージ ペイロードのサイズは、30 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 を生成する方法を説明します。