在 HTTP 連接器工作中,將 JSON 酬載視為字串處理
本教學課程說明如何在 Application Integration 中使用 HTTP 連接器工作時處理 JSON 酬載。
如果處理酬載的方式有誤,API 可能會誤解酬載內容,導致發生 400 Bad Request 錯誤。為確保 API 正確接收及剖析 JSON 酬載,請將 JSON 酬載視為字串,並明確將 Content-Type 標頭設為 application/json。
事前準備
- 確認您可以存取「應用程式整合」。
-
選取 Google Cloud 專案,然後完成下列工作:
- 將下列角色授予要用來建立連線的服務帳戶:
roles/secretmanager.viewerroles/secretmanager.secretAccessor
- 啟用下列服務:
secretmanager.googleapis.com(Secret Manager API)connectors.googleapis.com(Connectors API)
如果您尚未為專案啟用這些服務,建立連線時,「建立連線」頁面會提示您啟用。
- 將下列角色授予要用來建立連線的服務帳戶:
- 新增並設定「HTTP Connectors」(HTTP 連接器) 工作。
- 新增及設定「資料轉換器」工作,準備 JSON 酬載和標頭。
將 JSON 酬載視為字串處理
使用 HTTP 連接器工作時,如要處理含有特殊字元的 JSON 酬載,請完成下列步驟:
為 JSON 酬載建立字串變數
- 前往 Google Cloud 控制台的「Application Integration」(應用程式整合) 頁面。
- 在導覽選單中,按一下「整合」。
- 選取現有的整合服務或建立新的整合服務。請確認整合項目包含已設定的 HTTP 連接器和資料轉換器工作,詳情請參閱「事前準備」一節。
- 在整合服務編輯器中,按一下「建立」,開啟「建立變數」對話方塊。
- 在「建立變數」對話方塊中:
- 輸入下列資訊:
- 名稱:輸入名稱,例如
jsonPayloadString。 - 資料類型:選取「字串」。
- 預設值:
- 如果 JSON 酬載是由整合流程中的前一個工作 (例如另一個「資料轉換器」工作) 填入,請將這個欄位留空。系統會根據整合作業中先前工作的輸出內容,動態填入變數。
- 如果 JSON 酬載未由先前的工作填入,您必須提供靜態預設 JSON 酬載。在這個欄位中,以單一字串輸入 JSON 結構。
以下兩個範例說明如何在「預設值」欄位中輸入 JSON 字串:
不含特殊字元:如要表示 JSON
{"name": "Developer", "key": "test"},請輸入{ "name": "Developer", "key": "test" }。含有特殊字元:如果 JSON 含有換行符號 (
\n) 等特殊字元,就必須逸出這些字元。舉例來說,如要表示 JSON{"key": "value1\nvalue2"},請在欄位中輸入{"key": "value1\\nvalue2"}。
- 名稱:輸入名稱,例如
- 按一下 [建立]。
如要進一步瞭解如何建立及使用變數,請參閱「變數」。 - 輸入下列資訊:
將字串變數對應至連接器輸入主體
在「資料轉換器編輯器」中,將 jsonPayloadString 變數對應至「connectorInputPayload.Body」欄位。
- 在整合流程中新增資料轉換器工作。
- 開啟 Data Transformer 編輯器。您可以使用「圖表模式」或「指令碼模式」。
- 如要對應變數,請按照下列步驟操作:
- 圖表模式:新增
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 連接器工作
執行整合作業前,請確認 connectorInputPayload.Body 是否由 jsonPayloadString 變數填入,以及 connectorInputPayload.Headers 是否包含 Content-Type: application/json 標頭。這項設定可確保 HTTP 連接器工作會將 JSON 酬載做為字串傳送,並在「資料轉換器」工作中包含正確的 Content-Type。
執行整合作業,測試 API 要求。如果 API 傳回 400 Bad Request 錯誤,請在「資料轉換器」工作再次驗證 connectorInputPayload.Body 和 connectorInputPayload.Headers 的對應。
後續步驟
請嘗試使用其他連接器建立整合。如需所有支援的連結器清單,請參閱 連結器參考資料。