1. 程式人生 > 其它 >OData API 和 Restful API 這兩個概念的區別和聯絡

OData API 和 Restful API 這兩個概念的區別和聯絡

我們在 SAP API Business Hub 裡能看到 OData,SOAP 和 Restful 三種“不同”型別的 API:

它們之間到底有什麼區別和聯絡?

OData vs REST: What is REST?

REST(REpresentational State Transfer)是一種軟體架構風格,它定義瞭如何使用 HTTP 協議在兩個不同的系統之間傳送訊息。 REST 最初由 Roy Fielding 於 20 年前開發,現已發展成為用於在全球資訊網上交換資訊的最流行的架構。

REST 標準概述了 Web 服務的 6 種不同原則或架構約束:

  • 統一介面:REST 系統中的所有元件必須遵循相同的規則和接口才能相互通訊。每個資源都由一個 URI(統一資源識別符號)唯一標識。

  • 客戶端-伺服器:REST 將負責儲存和傳送資訊的伺服器與負責獲取資訊和適當使用資訊的客戶端分開。這種分離使雙方更加獨立和可擴充套件。

  • 無狀態:使用 REST 發出的每個請求都是無狀態的:它包含伺服器執行請求所需的所有資訊。請求完成後,伺服器不需要儲存引數或狀態。例如,如果客戶端請求訪問受限資源,則客戶端必須在每次請求時將其身份驗證令牌傳送到伺服器。

  • 可快取:REST 中的客戶端和伺服器都可以快取資源,有助於減少流量並提高效能。

  • 分層系統:REST 允許分層系統架構:客戶端可能只與系統中的一個伺服器通訊,而其他伺服器執行身份驗證和資料儲存等功能。客戶端無法判斷它是在與終端系統還是中介進行通訊。

  • 按需程式碼:可選地,REST 請求可以在必要時返回邏輯或可執行程式碼。

遵循上述原則的 API(應用程式程式設計介面)稱為 REST(或 RESTful)API。

OData vs REST: What is OData?

根據 OData 網站的說法,OData(開放資料協議)“定義了一組用於構建和使用 RESTful API 的最佳實踐。 OData 可幫助您在構建 RESTful API 的同時專注於業務邏輯,而無需擔心定義請求和響應標頭、狀態程式碼、HTTP 方法、URL 約定、媒體型別、有效負載格式、查詢選項等的各種方法。”

OData 最初由 Microsoft 建立,由非營利組織 OASIS(結構化資訊標準促進組織)標準化。 IBM、SAP 和 Salesforce 等企業技術公司都在其內部 IT 環境中使用了 OData。

REST 是 OData 最重要的元件技術。根據 OData 3.0 標準,OData 使用者應遵循 REST 原則,“除非有充分且具體的理由不這樣做”。

OData 標準還定義了用於響應 REST 請求傳輸資料的資料模型。 OData 支援兩種不同的資料傳輸協議:基於 XML 的 Atom 格式(用於釋出和編輯 Web 資源)和 JSON(用於以人類可讀的方式儲存資料)。

最後,OData 包括有關如何執行操作(例如跟蹤更改、定義可重用程式和傳送多個(批處理)REST 請求)的指南。

二者區別

儘管如此,OData 和 REST 之間的區別如下:

REST 是一種通過 HTTP 協議交換資訊的架構風格。 REST 標準定義了任何 REST API 都必須遵守的 6 條原則(1 條可選)。
OData 構建在 REST 框架之上,以定義構建 REST API 的最佳實踐,包括 HTTP 訊息格式、如何查詢 API 等。 儘管 OData 鼓勵使用者始終遵循 REST 原則,但如果有令人信服的理由,可以放寬此要求。 此外,OData 指定資料應以 Atom 或 JSON 格式傳輸。