HTTP コネクタ タスクで JSON ペイロードを文字列として処理する

このチュートリアルでは、Application Integration で HTTP Connectors タスクを使用するときに JSON ペイロードを処理する方法について説明します。

ペイロードを正しく処理しないと、API がペイロードを誤って解釈し、400 Bad Request エラーが発生する可能性があります。API が JSON ペイロードを正しく受信して解析できるようにするには、JSON ペイロードを文字列として扱い、Content-Type ヘッダーを明示的に application/json に設定します。

始める前に

  • Application Integration にアクセスできることを確認します。
  • Google Cloud プロジェクトを選択し、次のタスクを行います。

    • 接続の作成に使用するサービス アカウントに、次のロールを付与します。
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
    • 次のサービスを有効にします。
      • secretmanager.googleapis.com(Secret Manager API)
      • connectors.googleapis.com(Connectors API)

      プロジェクトでこれらのサービスを有効にしていない場合は、接続を作成するときに [接続の作成] ページで有効にするよう求められます。

  • HTTP コネクタタスクを追加して構成します。
  • データ変換タスクを追加して構成し、JSON ペイロードとヘッダーを準備します。

JSON ペイロードを文字列として処理する

HTTP コネクタ タスクを使用するときに特殊文字を含む JSON ペイロードを処理するには、次の操作を行います。

JSON ペイロードの文字列変数を作成する

  1. Google Cloud コンソールで、[Application Integration] ページに移動します。

    Application Integration に移動

  2. ナビゲーション メニューで [統合] をクリックします。
  3. 既存の統合を選択するか、新しい統合を作成します。始める前にセクションで説明したように、統合に構成済みの HTTP コネクタData Transformer タスクが含まれていることを確認します。
  4. 統合エディタで、 [作成] をクリックして [変数の作成] ダイアログを開きます。
  5. [変数の作成] ダイアログで、次の操作を行います。
    1. 次の情報を入力します。
      1. 名前: 名前を入力します(例: jsonPayloadString)。
      2. データ型: [文字列] を選択します。
      3. デフォルト値:
        • JSON ペイロードがインテグレーション フローの前のタスク(別の データ変換タスクなど)によって入力される場合は、このフィールドを空のままにします。この変数は、統合の前のタスクの出力に基づいて動的に入力されます。
        • JSON ペイロードが前のタスクで入力されていない場合は、静的なデフォルトの JSON ペイロードを指定する必要があります。このフィールドに JSON 構造を単一の文字列として入力します。

          デフォルト値フィールドに JSON 文字列を入力する例を 2 つ示します。

          特殊文字なし: JSON {"name": "Developer", "key": "test"} を表すには、{ "name": "Developer", "key": "test" } と入力します。

          特殊文字を含む: JSON に改行(\n)などの特殊文字が含まれている場合は、それらをエスケープする必要があります。たとえば、JSON {"key": "value1\nvalue2"} を表すには、フィールドに {"key": "value1\\nvalue2"} と入力します。

    2. [作成] をクリックします。
    JSON ペイロードの文字列変数を作成する
  6. 変数の作成と使用の詳細については、変数をご覧ください。

文字列変数をコネクタ入力本文にマッピングする

データ トランスフォーマー エディタで、jsonPayloadString 変数を connectorInputPayload.Body フィールドにマッピングします。

  1. インテグレーションにデータ変換タスクを追加します。
  2. データ変換ツール エディタを開きます。[図式] モードまたは [スクリプト] モードを使用できます。
  3. 変数をマッピングするには:
    • 図モード: jsonPayloadString を入力として追加し、connectorInputPayload.Body 出力フィールドにマッピングします。
    • スクリプト モード: Jsonnet コードを記述して、値 connectorInputPayload.Body = vars.jsonPayloadString; を割り当てます。

カスタム Content-Type ヘッダーを追加する

  1. データ変換エディタで、カスタム ヘッダーのマッピングを connectorInputPayload.Headers フィールドに追加します。
    • 図モード:{"Content-Type": "application/json"} の定数入力を追加し、connectorInputPayload.Headers にマッピングします。
    • スクリプトモード: 次の Jsonnet を追加してヘッダーを設定します。
      connectorInputPayload.Headers = {
        "Content-Type": "application/json"
      };
              

HTTP Connectors タスクを実行する

インテグレーションを実行する前に、connectorInputPayload.BodyjsonPayloadString 変数で入力され、connectorInputPayload.HeadersContent-Type: application/json ヘッダーが含まれていることを確認します。この設定により、HTTP コネクタ タスクは、データ変換タスクで正しい Content-Type を使用して JSON ペイロードを文字列として送信します。

統合を実行して API リクエストをテストします。API が 400 Bad Request エラーを返す場合は、データ変換タスクで connectorInputPayload.BodyconnectorInputPayload.Headers のマッピングを再度確認します。

次のステップ

他のコネクタとのインテグレーションを構築してみる。サポートされているすべてのコネクタのリストについては、 コネクタ リファレンスをご覧ください。