Send Docs Feedback

Note: Most user interface tasks can be performed in Edge Classic or the New Edge experience. For an overview, getting started topics, and release notes specific to the New Edge experience, see the docs.

リクエストデータとレスポンスデータの処理について

API プロキシにリクエストを行うと、API プロキシの構成方法に応じて、次のいずれかまたはすべての情報を渡すことができます。

  • リクエストヘッダー
  • クエリーパラメータ
  • フォームデータ
  • XML ペイロードまたは JSON ペイロード
  • リソース URI

デフォルトでは、リクエストのすべてのデータが ProxyEndpoint から TargetEndpoint に変更されることなく渡されます。そのため、TargetEndpoint でバックエンドサーバーにリクエストが行なわれると、元のリクエストのすべての情報がバックエンドサービスに渡されます。

同じことが、Edge がバックエンドサービスから受信したレスポンスについても該当します。デフォルトでは、レスポンスで受信したすべてのデータが、リクエストの発信元のアプリに変更されることなく渡されます。 

リクエストデータをバックエンドサーバーに渡す方法

以下の図に、API プロキシの定義を示します。

この API プロキシの構成は次のとおりです。

  • API プロキシの仮想ホスト: default
  • 仮想ホストで定義されたドメイン:  http://myOrg-prod.apigee.net
  • プロキシのベースパス: /v1/weather
  • ルートルールで指定された TargetEndpoint: default
  • ターゲット URL: http://weather.yahooapis.com

クライアントアプリにより、次の cURL コマンドを使用して、API プロキシへの GET リクエストが行われます。

curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

なお、このリクエストにはリソース「forecastrss」と 1 つのクエリーパラメータ「w」が含まれています。Edge では、以下のようにリクエストが解析され、フロー変数にリクエスト部分が割り当てられます。

{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}

フロー変数は次の値で設定されています。

  • request.verb: GET

  • proxy.basepath: /v1/weather

  • proxy.pathsuffixforecastrss

  • request.querystringw=12797282

リクエストとレスポンスの処理時には、多くのさまざまなフロー変数が作成されます。詳細については、「変数リファレンス」を参照してください。

TargetEndpoint によりリクエストの情報を使用してバックエンドサービスへのリクエストが行われます。

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

なお、リクエストで指定されているリソースとクエリーパラメータがバックエンドサーバーへのリクエストに自動的に含まれていることに注目してください。TargetEndpoint の定義により、このリクエストのフォームは以下のようになります。

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

クエリーパラメータと同様に、API プロキシへのリクエストに含まれるヘッダーまたはフォームパラメータがバックエンドサーバーに渡されます。例えば、ヘッダーを含む以下のリクエストを行なったとします。

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

またはヘッダーとフォームデータを含む以下のフォームのリクエストを行なったとします。

curl -X POST -H "Content-type:application/json" -d \
'{"email" : "janetutorialxml@example.com", 
  "firstName" : "Jane", 
  "lastName" : "Tutorial", 
  "userName" : "jtutorialxml"
}' \
http://myOrg-prod.apigee.net/v1/register/user

どちらの例でも、ヘッダーとフォームデータがバックエンドサービスに変更されることなく渡されます。ヘッダーは request.headers.countrequest.headers.names などのフロー変数で表されます。フォームデータは、request.formparam.count、 request.formparam.names などフロー変数で表されます。

レスポンスデータが返される方法

デフォルトでは、レスポンスのバックエンドサービスから Edge が受信したすべてのデータは、リクエストの送信元のアプリに変更されることなく渡されます。リクエストに関して前述したように、レスポンスで返されるデータには、Edge のフロー変数を介してアクセスできます。詳細については、「変数リファレンス」を参照してください。

API プロキシのリクエストデータとレスポンスデータの操作

バックエンドサーバーに送信する前にリクエストデータを変更したくなる場合がよくあります。例:

  • リクエストを検証するために Edge が使用するセキュリティ情報を削除する (その情報がバックエンドサービスには不要)。
  • ユーザーの追跡、アナリティクスの収集などの目的でバックエンドサービスに送信されるデータを追加する。
  • リクエストデータに基づいて条件に応じてリクエストを処理する。例えば、API プロキシに複数の TargetEndpoints がある場合があります。リクエストが使用する TargetEndpoint はリクエストデータにより決定されます。次に、バックエンドサービスに送信する前に、リクエストからそのデータを削除します。

同じことがレスポンスのデータにも該当します。レスポンス処理の一環として、API プロキシが要求側のアプリケーションにデータを返す前に、データを変更する必要がある場合があります。

Edge では、リクエストデータとレスポンスデータを処理するために使用できるポリシーが定義されています。これらのポリシーには、次のものがあります。

参考資料

Help or comments?