Fabric API for GraphQL 的一大優勢是能透過單一統一的 API 端點公開多個資料來源,如湖屋、倉庫和資料庫。 這表示您的應用程式可以在單一 GraphQL 查詢中從不同來源取得資料,免除了分別連接多個 API 或資料庫的需求。
舉例來說,你可能在一個倉庫裡有客戶資料,另一個湖屋裡有庫存資料。 你不必另外呼叫兩個 API,而是可以透過 GraphQL API 同時查詢兩個來源,減少網路負擔並簡化應用程式程式碼。
多來源查詢的運作方式
當你發出跨越多個資料來源的 GraphQL 查詢時,API 會自動平行地將個別請求分散到每個資料來源,然後將結果合併成單一回應。 此方法:
- 減少往返次數:您的應用程式只需發送一次請求,而非多次連續呼叫
- 提升效能:平行執行意味著整體反應時間更快
- 簡化客戶端程式碼:無論資料存放在哪裡,你都能使用單一的 API 介面
這很重要
多來源查詢有以下限制:
- 你無法在跨越不同資料來源的類型間建立關係。 關係只能在單一資料來源內運作。
- 每個資料來源的個別請求會平行執行,且沒有保證的順序。
- 每個對資料來源的請求都是獨立的——沒有跨越多個來源的交易。
查詢範例
商業情境:想像你正在建立一個儀表板,將顧客資訊與產品庫存狀態並列顯示。 您的客戶資料存放在銷售倉庫(ContosoSales),而產品庫存則管理在另一個由供應鏈系統更新的湖庫(ContosoInventory)中。 如果沒有多來源支援,你就得分別呼叫兩個 API,管理兩個不同的連線,然後自己把資料合併到你的應用程式碼裡。
使用 Fabric API for GraphQL,你可以在單一查詢中從兩個來源取得資料:
query {
customers (first: 1) {
items {
FirstName
LastName
}
}
inventories (first: 1) {
items {
Name
}
}
}
這個單一請求會從 ContosoSales 資料來源擷取客戶紀錄,並從 ContosoInventory 資料來源擷取庫存項目,並合併成一個回應。 你的儀表板只需一次 API 呼叫就能取得所有所需資料,而不是兩次。
要求的輸出是:
{
"data": {
"customers": {
"items": [
{
"FirstName": "Orlando",
"LastName": "Gee"
}
]
},
"inventories": {
"items": [
{
"Name": "AWC Logo Cap"
}
]
}
}
}
回應結構與查詢結構相呼應。 在data物件中,您有兩個頂層欄位(customers和inventories),對應您所做的兩個查詢。 每個欄位都包含 items 一個陣列,裡面有實際的結果。
customers項目具有像 FirstName 和 LastName這樣的屬性,而inventories項目的屬性如 Name—— ,完全符合查詢中的需求。
以下是執行此請求時查詢視圖的外觀: