在 HTTP 連接器工作中,將 JSON 酬載視為字串處理

本教學課程說明如何在 Application Integration 中使用 HTTP 連接器工作時處理 JSON 酬載。

如果處理酬載的方式有誤,API 可能會誤解酬載內容,導致發生 400 Bad Request 錯誤。為確保 API 正確接收及剖析 JSON 酬載,請將 JSON 酬載視為字串,並明確將 Content-Type 標頭設為 application/json

事前準備

  • 確認您可以存取「應用程式整合」
  • 選取 Google Cloud 專案,然後完成下列工作:

    • 將下列角色授予要用來建立連線的服務帳戶:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
    • 啟用下列服務:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如果您尚未為專案啟用這些服務,建立連線時,「建立連線」頁面會提示您啟用。

  • 新增並設定「HTTP Connectors」(HTTP 連接器) 工作。
  • 新增及設定「資料轉換器」工作,準備 JSON 酬載和標頭。

將 JSON 酬載視為字串處理

使用 HTTP 連接器工作時,如要處理含有特殊字元的 JSON 酬載,請完成下列步驟:

為 JSON 酬載建立字串變數

  1. 前往 Google Cloud 控制台的「Application Integration」(應用程式整合) 頁面。

    前往 Application Integration

  2. 在導覽選單中,按一下「整合」
  3. 選取現有的整合服務或建立新的整合服務。請確認整合項目包含已設定的 HTTP 連接器資料轉換器工作,詳情請參閱「事前準備」一節。
  4. 整合服務編輯器中,按一下「建立」,開啟「建立變數」對話方塊。
  5. 在「建立變數」對話方塊中:
    1. 輸入下列資訊:
      1. 名稱:輸入名稱,例如 jsonPayloadString
      2. 資料類型:選取「字串」
      3. 預設值:
        • 如果 JSON 酬載是由整合流程中的前一個工作 (例如另一個「資料轉換器」工作) 填入,請將這個欄位留空。系統會根據整合作業中先前工作的輸出內容,動態填入變數。
        • 如果 JSON 酬載未由先前的工作填入,您必須提供靜態預設 JSON 酬載。在這個欄位中,以單一字串輸入 JSON 結構。

          以下兩個範例說明如何在「預設值」欄位中輸入 JSON 字串:

          不含特殊字元:如要表示 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. 開啟 Data Transformer 編輯器。您可以使用「圖表模式」或「指令碼模式」
  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 連接器工作

執行整合作業前,請確認 connectorInputPayload.Body 是否由 jsonPayloadString 變數填入,以及 connectorInputPayload.Headers 是否包含 Content-Type: application/json 標頭。這項設定可確保 HTTP 連接器工作會將 JSON 酬載做為字串傳送,並在「資料轉換器」工作中包含正確的 Content-Type

執行整合作業,測試 API 要求。如果 API 傳回 400 Bad Request 錯誤,請在「資料轉換器」工作再次驗證 connectorInputPayload.BodyconnectorInputPayload.Headers 的對應。

後續步驟

請嘗試使用其他連接器建立整合。如需所有支援的連結器清單,請參閱 連結器參考資料