大多數應用程式都是使用某種形式的用戶端 SDK 或 API 網址編寫而成。用戶端 SDK 和 API 網址會繫結至特定 Looker API 版本。即使 Looker 變更新版 API,您的應用程式仍會繼續運作。除非您選擇升級用戶端 SDK (或修改 API 網址),改用新版 Looker API,否則其他 API 版本的變更不會影響您的應用程式。
Looker 如何變更 API
Looker API 的架構可確保 Looker API 端點穩定運作,進而確保應用程式穩定運作。
隨著 Looker 新增更多功能,我們也會更新 Looker REST API,以便存取或管理這些新功能。每次發布 Looker 版本時,我們都會在現行版本的 Looker API 中新增 API 函式、參數和回應類型屬性。在大多數情況下,API 的新增內容並非重大變更,因此我們可以保留現有 API 版本,不會影響任何以該 API 建構的現有應用程式程式碼。現有的應用程式程式碼可能只是不知道後續 Looker 版本中出現的新函式、參數或功能。
如果 API 變更會導致現有應用程式程式碼無法運作,我們會將這些破壞性變更納入新的 API 版本。也就是說,舊版 API 仍會照常運作,而新版 API 則會同時執行,並套用變更和更新。單一 Looker 執行個體中可以並存多個 API 版本,因此您可以選擇何時升級至新版 API。您為呼叫舊端點而建構的現有程式碼,會繼續呼叫舊端點。新程式碼應在最新 API 版本層級中呼叫新版端點。
但重大安全性問題除外。如果我們發現與特定 API 部分相關的重大安全性問題,我們會盡快採取一切必要措施來減輕該安全性問題,包括停用有漏洞的功能,直到有適當的解決方案為止。
如果我們需要淘汰某項功能或屬性,以便採用更完善的實作方式或解決方案,通常會保留目前的 API,但將相關聯的 API 端點標示為「已淘汰」,表示您應在應用程式程式碼中停用該端點。
API 的破壞性變更和增量變更
破壞性變更會刪除或重新命名 API 端點的現有構件。可能包括:
- 變更或刪除參數名稱或類型
- 新增必要參數
- 變更基準網址
- 變更或刪除回應中的現有屬性
另一方面,附加變更則可套用至穩定端點。包括:
- 新的選用參數
- 回應中的新屬性 (我們認為這不會造成中斷,因為我們假設您的程式碼會忽略回應中的不明屬性,這是 REST API 社群的常見做法)
如果穩定的 Looker API 端點需要大幅變更,才能採用新架構或功能,通常會將變更新增至新端點,並併入新版 API,現有 API 端點則維持不變。
API 端點的旗標
大多數 API 端點都視為穩定,也就是說,這些端點不會變更。除非是為了修正安全性問題等極端情況,否則 Looker 不會對穩定端點發布重大變更。
其他 API 端點可能會標示為 Beta 版或已淘汰:
- Beta 版端點仍在開發階段,日後可能會有變動。因此不會受到重大變更的影響。使用 Beta 版端點時,請考量 Looker API 的變更是否會對應用程式或開發週期造成特別大的影響。如果您打算使用 Beta 版端點,請詳閱 Looker 的版本資訊,瞭解所有異動。
- 已淘汰的端點目前仍受支援,且仍可使用,但會在日後推出的版本中刪除。如果舊版程式碼使用已淘汰的端點,請更新程式碼,停止使用該端點。如果日後發布的 Looker 版本移除該端點的支援,任何仍在使用該端點的程式碼都會中斷。在大多數情況下,系統會以改良功能取代已淘汰的端點。如果您發現應用程式使用已淘汰的函式或屬性,建議盡快重構程式碼,替換已淘汰的元素。
Beta 版和已淘汰的端點會在 API Explorer 和 4.0 API 參考資料中標示。未標示的端點視為穩定。
API 呼叫類型
以下是定義為查詢 API 呼叫的 API 呼叫類型:
- 自動查詢管線所需的呼叫
- 從用戶端資料庫取得資料的呼叫
- 執行 SQL 查詢或擷取內容結果的呼叫
例如:
定義為管理員 API 呼叫的 API 呼叫類型如下:
- 建構應用程式、控管執行個體間的內容,以及執行管理工作時所需的呼叫
- 控制 Looker (Google Cloud Core) 執行個體的呼叫
- 執行內容管理、權限和使用者管理、執行個體管理,或從多個資料夾提取內容的呼叫
相關例子包括:
遷移至新版 API
選擇將用戶端 SDK 或 API 網址升級至新版 API 時,請檢查應用程式程式碼,確認您是否依賴新版 API 變更的項目。請務必完成以下事項:
- 在應用程式程式碼中搜尋更新後的函式、值和屬性名稱。
- 確認應用程式程式碼支援任何類型變更 (例如整數變更為字串)。
- 稽核程式碼 (請參閱「稽核程式碼」一節)。
稽核程式碼
對於某些語言,您可以在建構時發現 API 的重大變更,因為編譯錯誤:
- 如果應用程式是以經過編譯的強型別語言編寫,新版 API 中與現有程式碼不一致的參數或回應型別結構變更,應該會因為編譯型別檢查和編譯器錯誤訊息而顯而易見。
- 如果應用程式是以寬鬆型別的動態語言 (例如 JavaScript、Ruby 和 Python) 編寫,可能較難找出應用程式中會受到新版 API 中重大變更影響的部分。這類語言可能需要執行階段單元測試,才能找出與型別變更相關的問題。
在所有情況下,最佳做法都是進行單元測試,以執行應用程式程式碼,包括呼叫 Looker API (而非模擬呼叫)。