バックエンド サービスとのデータの受け渡し
API クライアントが API Gateway にデプロイされた API にリクエストを送信すると、クライアントはリクエストの一部として次のいずれかまたはすべての情報を渡すことができます。
- リクエスト ヘッダー
- クエリ パラメータ
- フォームデータ
- XML ペイロードまたは JSON ペイロード
- リクエストパス
API リクエストに対するレスポンスを構築する際に、バックエンド サービスは次のようなデータを API クライアントに返すことができます。
- レスポンス ヘッダー
- XML ペイロードまたは JSON ペイロード
このドキュメントでは、このデータをバックエンド サービスとの間で受け渡しする方法について説明します。
リクエスト データをバックエンド サービスに渡す方法
API クライアントからのリクエスト内のすべてのデータは、変更されることなくバックエンド サービスに渡されます。そのうえで、バックエンド サービスがリクエストの処理の一環としてリクエスト データを解析します。
レスポンス データを API クライアントに返す方法
バックエンド サービスからのレスポンスで受信したすべてのデータは、変更されることなく API クライアントに渡されます。レスポンスで返されたデータを処理するのは API クライアントの責任です。
リクエスト URL をバックエンド サービスに渡す方法
バックエンド サービスへのリクエストに使用される URL は、x-google-backend
拡張機能によって制御されます。このセクションでは、バックエンド サービスの URL を構成するオプションについて説明します。
OpenAPI 仕様でのバックエンド サービスのアドレスとパスの設定
API 構成の作成に使用する OpenAPI 仕様で、x-google-backend
拡張機能を使用してバックエンド サービスの URL を指定します。たとえば、バックエンド サービスを次の形式で指定します。
バックエンド | x-google-backend |
---|---|
Cloud Run 関数 | x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello |
Cloud Run | x-google-backend: address: https://hello-HASH.a.run.app |
App Engine スタンダード環境 | x-google-backend: address: https://PROJECT_ID.appspot.com |
この例では次のようになります。
- GCP_REGION は、デプロイされるバックエンドの GCP リージョンを指定します。
- PROJECT_ID は、Google Cloud プロジェクト ID を指定します。
- HASH は、Cloud Run サービスの作成時に生成された一意のハッシュコードを指定します。
さらに、OpenAPI 仕様の path
パラメータでは、API でサポートされるエンドポイント(リソース)を指定します。絶対パスまたはパスパラメータを使用するパスを指定できます。
パス | パラメータを含むパス |
---|---|
paths: /hello: |
paths: /hello/{name}: |
API リクエストからのバックエンド サービス URL の生成
API Gateway は API クライアントからのリクエストを処理するときに、API クライアントから送信されたリクエスト URL を受け取り、バックエンド サービスへのリクエストに使用する URL に変換します。この変換がどのように行われるかは、使用しているパス変換方法によって異なります。
x-google-backend
拡張機能の path_translation
オプションは、次の 2 つのパス変換戦略をサポートしています。
APPEND_PATH_TO_ADDRESS
: バックエンド サービス URL は、クライアント リクエストのリソースパスをx-google-backend
拡張子のaddress
URL に追加して生成されます。ほとんどのバックエンド サービスは、バックエンドが API クライアントで指定されたものと同じリソースパスを受信することを表す
APPEND_PATH_TO_ADDRESS
を使用します。CONSTANT_ADDRESS
: バックエンド サービスの URL は、x-google-backend
拡張子のaddress
URL によって定義されるため、定数となります。クライアント リクエストにリソースパスが含まれている場合、リソースパスはクエリ パラメータを使用してバックエンド サービス URL に追加されます。この方法は通常、Cloud Run functionsで使用されます。
次に例を示します。
APPEND_PATH_TO_ADDRESS
address
:https://PROJECT_ID.appspot.com
- OpenAPI パスパラメータを使用しない場合。
- OpenAPI パス:
/hello
- API クライアント リクエストのリソースパス:
/hello
- バックエンド サービス リクエスト URL:
https://PROJECT_ID.appspot.com/hello
- OpenAPI パス:
- OpenAPI パスパラメータを使用する場合。
- OpenAPI パス:
/hello/{name}
- API クライアント リクエストのリソースパス:
/hello/Dave
- バックエンド サービス リクエスト URL:
https://PROJECT_ID.appspot.com/hello/Dave
- OpenAPI パス:
CONSTANT_ADDRESS
address
:https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
- OpenAPI パスパラメータを使用しない場合。
- OpenAPI パス:
/hello
- API クライアント リクエストのリソースパス:
/hello
- バックエンド サービス リクエスト URL:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
- OpenAPI パス:
- OpenAPI パスパラメータを使用する場合。
- OpenAPI パス:
/hello/{name}
- API クライアント リクエストのリソースパス:
/hello/Dave
- バックエンド サービス リクエスト URL:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello?name=Dave
- OpenAPI パス:
path_translation
を設定する
x-google-backend
の設定の一部として path_translation
を設定します。
x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello path_translation: [ APPEND_PATH_TO_ADDRESS | CONSTANT_ADDRESS ]`
path_translation
のデフォルト値は、OpenAPI 仕様で x-google-backend
を設定した場所によって異なります。
x-google-backend
が OpenAPI 仕様のトップレベルで使用される場合、path_translation
はデフォルトでAPPEND_PATH_TO_ADDRESS
になります。x-google-backend
が OpenAPI 仕様のオペレーション レベルで使用される場合、path_translation
はデフォルトでCONSTANT_ADDRESS
になります。