Odoo 的主文件指出,舊版 RPC 資料庫服務已在 Odoo 20 中移除。更廣泛的 XML-RPC 與 JSON-RPC API 自 19.0 版起已被棄用,但 Odoo 20 並未移除所有舊版服務。Odoo 文件說明 common 與 object 服務將保留至 Odoo 22。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) 因此,整合團隊需要找出每個外部連線所使用的服務,而不是把舊版 RPC 支援視為只有一個移除日期的單一功能。
Odoo 的美洲活動頁面表示,Odoo 20 將於 2026 年 9 月 2 日至 3 日在舊金山的活動中發布。 (Oxp26 Americas Introduction) 升級規劃現在即可納入已記錄的資料庫服務移除,但生產環境決策仍應與最終的 Odoo 20 發布文件核對。
移除適用於特定服務
Odoo 將 `/xmlrpc`、`/xmlrpc/2` 與 `/jsonrpc` 列為自 19.0 版起已棄用的舊版端點。在這些 API 中,資料庫服務會在 Odoo 20 中移除,而 common 與 object 服務預計保留至 Odoo 22。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) 使用仍保留服務的整合,在升級到 Odoo 20 後可能繼續運作,但僅憑端點無法確認相容性。
系統可以透過舊版 RPC 介面使用不同服務。因此,整合檢視應同時記錄端點與所呼叫的服務。僅將應用程式描述為 XML-RPC 或 JSON-RPC 整合,無法看出是否依賴 Odoo 20 中已移除的操作。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)
common 與 object 服務的持續可用只是暫時的。Odoo 計畫在 Odoo 22 移除這兩者。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API) 團隊可以把資料庫服務呼叫的緊急工作與保留服務的移轉分開處理,但兩者都需要規劃。
JSON-2 變更了請求契約
Odoo 將 JSON-2 文件為替代 API。其端點格式為 `/json/2/<model>/<method>`,model 與 method 會包含在 URL 中。 (Odoo master Docs: Reference External API) 因此,移轉不只是把既有 RPC 用戶端的基礎路徑替換掉而已。每個操作都必須對應到適當的 model 與 method 路由。
JSON-2 需要在 JSON 請求本文中使用具名引數,而不是位置式 RPC 引數。 (Odoo master Docs: Reference External API) 現有的包裝器、中介軟體與產生式用戶端可能假設引數順序決定意義。這些元件都需要逐一檢視。如果用戶端仍以位置式參數建立請求,即使導向新端點也無法運作。
對於每個已移轉的操作,團隊應記錄 JSON-2 所需的目標 model、method 與具名引數。 (Odoo master Docs: Reference External API) 接著應在相關的 Odoo 20 環境中測試請求,特別是當共用整合函式庫為多個應用程式建立呼叫時。靜態負載比對無法確認伺服器或用戶端如何處理完整請求。
驗證方式也必須變更
JSON-2 使用 bearer API-key 驗證。 (Odoo master Docs: Reference External API)移轉工作應涵蓋金鑰建立、安全儲存、授權標頭處理以及金鑰替換。代理伺服器、閘道與用戶端函式庫都應檢查,以確保在轉送請求時保留該標頭。也應檢視記錄、監控與錯誤處理,避免憑證外洩。
文件已建立驗證方法,但各組織仍須決定 API 金鑰如何納入其憑證控管。 (Odoo master Docs: Reference External API)這包括指派金鑰責任、控管可使用的位置,以及定義金鑰被替換時,受影響的整合要如何更新。
二進位欄位有一項獨立的相容性變更
Odoo 的 ORM 變更記錄另提到 Odoo 20 的一項 RPC 變更:二進位欄位的表示新增了 `BinaryValue.filename`。 (Odoo master Docs: Orm Changelog)這與資料庫服務移除是分開的,因為它改變的是回傳資料,而不是服務可用性。讀取、轉換或驗證包含二進位欄位回應的應用程式,應納入相容性測試。
變更記錄確認新增了 `filename` 成員,但其實際影響取決於用戶端。 (Odoo master Docs: Orm Changelog)測試應確認嚴格的 schema、序列化器、回應比對以及下游轉換是否接受這個新增成員。忽略未知欄位的用戶端可能不需要調整,但這種行為應經過驗證,而不是預設成立。
如何範圍界定整合稽核
先找出使用 `/xmlrpc`、`/xmlrpc/2` 或 `/jsonrpc` 的連線,Odoo 將其標示為已淘汰端點。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)盤點範圍應涵蓋內部開發的應用程式、中介軟體、排程流程,以及可取得設定或原始碼的第三方連接器。為每個連線指派一位負責人,以便驗證其用途與狀態。
接著,依照舊版服務對每個連線分類。使用資料庫服務在 Odoo 20 需要修正,而常用服務與物件服務目前文件仍顯示可用,直到 Odoo 22。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)這可支援分階段規劃:先處理 Odoo 20 的相容性問題,再為其餘已淘汰的呼叫排定遷移日期。
對於遷移到 JSON-2 的整合,請記錄 `/json/2/<model>/<method>` 路由、具名請求引數,以及替代介面所需的 bearer API key 驗證。 (Odoo master Docs: Reference External API)測試案例應涵蓋成功請求、被拒絕的驗證、無效的具名引數,以及應用程式對回傳資料的處理。凡是出現二進位欄位之處,都要加入該類測試案例。
確認 Odoo 20 的最終行為
移除細節取自 Odoo 的 master 開發文件,而公布的發行時間則來自一個活動頁面,該頁面表示 Odoo 20 將於 2026 年 9 月的 Americas 活動期間發行。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API; Oxp26 Americas Introduction)在部署前,團隊應重新確認已發布的 Odoo 20 版本文件,以及他們打算使用的確切版本與建置。
使用已淘汰的 RPC 端點,本身不能證明整合在 Odoo 20 會停止運作,因為常用服務與物件服務的文件仍顯示可用,直到 Odoo 22。反之,在較早版本上能成功運作,也不能證明資料庫服務呼叫在移除後仍相容。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)
升級決策檢查清單
在核准 Odoo 20 升級之前,決策者應要求提供整合清單,列出每個已淘汰端點、所呼叫的服務、其負責人,以及預定的修正方式。資料庫服務依賴應有經過測試的替代方案。仍停留在常用服務或物件服務上的整合,應另訂遷移日期,以反映其在 Odoo 22 的文件化移除時程。 (Odoo master Docs: Reference External API; Odoo master Docs: Reference External Rpc API)
審查應確認 JSON-2 實作會將模型與方法放在 URL 中,使用具名 JSON 引數,並以 bearer API 金鑰驗證。若存在二進位欄位,測試應考慮加入 `BinaryValue.filename`。 (Odoo master Docs: Reference External API; Odoo master Docs: Orm Changelog) 這些檢查可區分 Odoo 20 立即移除資料庫服務,與之後才淘汰其餘舊版服務的差異。
