HTTP コネクタ タスクで JSON ペイロードを文字列として処理する
このチュートリアルでは、Application Integration で HTTP Connectors タスクを使用するときに JSON ペイロードを処理する方法について説明します。
ペイロードを正しく処理しないと、API がペイロードを誤って解釈し、400 Bad Request エラーが発生する可能性があります。API が JSON ペイロードを正しく受信して解析できるようにするには、JSON ペイロードを文字列として扱い、Content-Type ヘッダーを明示的に application/json に設定します。
始める前に
- Application Integration にアクセスできることを確認します。
-
Google Cloud プロジェクトを選択し、次のタスクを行います。
- 接続の作成に使用するサービス アカウントに、次のロールを付与します。
roles/secretmanager.viewerroles/secretmanager.secretAccessor
- 次のサービスを有効にします。
secretmanager.googleapis.com(Secret Manager API)connectors.googleapis.com(Connectors API)
プロジェクトでこれらのサービスを有効にしていない場合は、接続を作成するときに [接続の作成] ページで有効にするよう求められます。
- 接続の作成に使用するサービス アカウントに、次のロールを付与します。
- HTTP コネクタタスクを追加して構成します。
- データ変換タスクを追加して構成し、JSON ペイロードとヘッダーを準備します。
JSON ペイロードを文字列として処理する
HTTP コネクタ タスクを使用するときに特殊文字を含む JSON ペイロードを処理するには、次の操作を行います。
JSON ペイロードの文字列変数を作成する
- Google Cloud コンソールで、[Application Integration] ページに移動します。
- ナビゲーション メニューで [統合] をクリックします。
- 既存の統合を選択するか、新しい統合を作成します。始める前にセクションで説明したように、統合に構成済みの HTTP コネクタと Data Transformer タスクが含まれていることを確認します。
- 統合エディタで、 [作成] をクリックして [変数の作成] ダイアログを開きます。
- [変数の作成] ダイアログで、次の操作を行います。
- 次の情報を入力します。
- 名前: 名前を入力します(例:
jsonPayloadString)。 - データ型: [文字列] を選択します。
- デフォルト値:
- JSON ペイロードがインテグレーション フローの前のタスク(別の データ変換タスクなど)によって入力される場合は、このフィールドを空のままにします。この変数は、統合の前のタスクの出力に基づいて動的に入力されます。
- JSON ペイロードが前のタスクで入力されていない場合は、静的なデフォルトの JSON ペイロードを指定する必要があります。このフィールドに JSON 構造を単一の文字列として入力します。
デフォルト値フィールドに JSON 文字列を入力する例を 2 つ示します。
特殊文字なし: JSON
{"name": "Developer", "key": "test"}を表すには、{ "name": "Developer", "key": "test" }と入力します。特殊文字を含む: JSON に改行(
\n)などの特殊文字が含まれている場合は、それらをエスケープする必要があります。たとえば、JSON{"key": "value1\nvalue2"}を表すには、フィールドに{"key": "value1\\nvalue2"}と入力します。
- 名前: 名前を入力します(例:
- [作成] をクリックします。
変数の作成と使用の詳細については、変数をご覧ください。 - 次の情報を入力します。
文字列変数をコネクタ入力本文にマッピングする
データ トランスフォーマー エディタで、jsonPayloadString 変数を connectorInputPayload.Body フィールドにマッピングします。
- インテグレーションにデータ変換タスクを追加します。
- データ変換ツール エディタを開きます。[図式] モードまたは [スクリプト] モードを使用できます。
- 変数をマッピングするには:
- 図モード:
jsonPayloadStringを入力として追加し、connectorInputPayload.Body 出力フィールドにマッピングします。 - スクリプト モード: Jsonnet コードを記述して、値
connectorInputPayload.Body = vars.jsonPayloadString;を割り当てます。
- 図モード:
カスタム Content-Type ヘッダーを追加する
- データ変換エディタで、カスタム ヘッダーのマッピングを connectorInputPayload.Headers フィールドに追加します。
- 図モード: 値
{"Content-Type": "application/json"}の定数入力を追加し、connectorInputPayload.Headers にマッピングします。 - スクリプトモード: 次の Jsonnet を追加してヘッダーを設定します。
connectorInputPayload.Headers = { "Content-Type": "application/json" };
- 図モード: 値
HTTP Connectors タスクを実行する
インテグレーションを実行する前に、connectorInputPayload.Body が jsonPayloadString 変数で入力され、connectorInputPayload.Headers に Content-Type: application/json ヘッダーが含まれていることを確認します。この設定により、HTTP コネクタ タスクは、データ変換タスクで正しい Content-Type を使用して JSON ペイロードを文字列として送信します。
統合を実行して API リクエストをテストします。API が 400 Bad Request エラーを返す場合は、データ変換タスクで connectorInputPayload.Body と connectorInputPayload.Headers のマッピングを再度確認します。
次のステップ
他のコネクタとのインテグレーションを構築してみる。サポートされているすべてのコネクタのリストについては、 コネクタ リファレンスをご覧ください。