由 AI 翻譯,尚未經過社群審閱。 閱讀英文版

部落格 · 2023年9月18日 · Steve Simpson · 整合

Apex Web 服務:Web 魔法師的構建模組

引言:

在這篇部落格文章中,我將深入探討如何在 Salesforce 中構建自訂 Apex Web 服務。當你需要讓一個外部程序與 Salesforce 互動來讀取或寫入資料,而標準 REST API 又力不從心時,這些服務至關重要。我們將逐一講解五個例子,複雜度逐步提高,從標準查詢一直到更新。

圖示:從 Postman 呼叫的五個自訂 Apex Web 服務示例:返回記錄清單的 GET、帶響應物件的 GET、帶引數的 GET、POST,以及帶錯誤的 POST

自訂 Web 服務概覽

我們將探討五個自訂 Web 服務的例子:

**使用標準 SObject 清單的 GET:**用標準 SObject 清單獲取資料。

**帶 JSON 響應的包裝器:**用一個 JSON 響應包裝 GET 請求,加以增強。

**新增引數:**給 GET 請求引入引數,更精確地獲取資料。

**用 POST 插入:**實現一個用於插入資料的 POST 請求。

**返回錯誤訊息:**妥善處理並返回錯誤訊息。

實現自訂 Web 服務

示例 1:使用標準 SObject 清單的 GET

在這個例子中,我們定義一個帶有自訂 URI 的 REST 資源,並指定 HTTP 動詞(GET)。類應該宣告為 global,我們用一個簡單的查詢返回一個標準客戶清單。

Apex 程式碼:一個帶 GET 方法的 REST 資源,查詢客戶並以預設序列化方式返回清單

示例 2:帶 JSON 響應的包裝器

為了控制發回給用戶端的資料,我們使用一個響應物件。我們返回的不是 SObject 清單,而是一個自訂響應物件的清單,用只包含 ID 和名稱的輕量方式來表示客戶。

Apex 程式碼:一個 GET 方法,構建一個包含客戶清單的響應物件

示例 3:新增引數

當你需要某個特定客戶的資料時,引數必不可少。通過讀取 RestContext.params,你可以獲取客戶 ID,並把它用在 SOQL 的 WHERE 子句中來篩選資料。

Apex 程式碼:一個 GET 方法,從請求中讀取 customerid 引數,並在響應物件中返回該客戶

示例 4:用 POST 插入

當你需要寫入資料時,就使用 POST 方法。在這個例子中,我們建立一個響應物件和一個請求物件。請求物件接收一個帶名稱的客戶,我們用 JSON 序列化器把請求序列化為一個特定的類。建立並插入一個新客戶後,返回一個成功狀態。

Apex 程式碼:一個 POST 方法,解析請求體,插入一個客戶,並返回成功或錯誤狀態

示例 5:返回錯誤訊息

這個例子與示例 4 類似,但加入了錯誤處理。出現異常時,錯誤會被捕獲並加入一個清單,狀態碼被設為 500(或任何你喜歡的數字)。

Apex 程式碼:帶錯誤處理的 POST 方法,返回錯誤訊息和 HTTP 500 狀態碼

結論

通過這些例子,我們展示了在 Salesforce 中建立自訂 Apex Web 服務的基本構建模組。從一個簡單的 GET 請求開始,我們逐步提高複雜度,引入了引數、POST 請求和錯誤處理。

敬請關注

感謝閱讀,期待很快與你分享更多幹貨滿滿的探險!請繼續關注 www.SteveTechArc.com 和 YouTube 頻道 @SteveTechArc (opens in a new tab)。訂閱,加深你對 Salesforce 以及如何將它與其他系統整合的理解。

與架構師同行以及正走在架構師之路上的人分享整合知識,一起改變世界!

轉錄藉助了 AI

STA 1.8