OData介紹
OData是一種非常簡單的接口協議,它有着簡單的結構以及簡單的操作方式。當我們提及接口的方式,目前首推的是RESTful,REST是Representational State Transfer的縮寫,它是一種輕量的接口方式(和傳統的SOAP的接口方式相比)。注意,REST不是協議,只是開發接口中的術語,這種接口方式有以下一些特點:
-
無狀態交互(Statelessness)
請求不會在服務端存儲,任何的請求包含了所有服務所需要的信息。
-
可緩存(Cacheability)
請求的返回信息可以定義是否需要緩存。
-
層級系統(Layered System)
客戶端不清楚訪問的最終系統,有可能是直接連接,也可能是中間系統。
-
統一接口(Uniform Interface)
統一的接口方式可以將客戶端和服務端解耦。
-
按需編程(Code on demand)
服務可以根據客戶端傳輸的請求內容定制化。
REST請求的通用操作:
-
GET
客戶端從服務端獲取數據。
-
POST
客戶端傳送信息給服務端進行創建的操作或者修改的操作。
-
PUT
客戶端傳送信息給服務端進行創建的操作或者修改的操作。
-
DELETE
刪除服務端的數據操作
-
PATCH
更新某一條數據中的某個屬性。
OData的定義
OData是Open Data Protocol的縮寫,是一種基於REST的數據訪問方式。目前這種協議有微軟進行維護和發布。
詳細的OData的介紹請參考:www.odata.org
OData 協議遵循以下五種設計原則
-
數據多樣性存儲
在一個服務里面可以定義多種數據的存儲。
-
向下兼容
客戶端和服務端可以使用不同版本的OData服務,每個服務都可以向下兼容。
-
REST原則
遵循上文中提到的REST原則。
-
容易擴展
如果需要額外的服務,應該能夠進行簡單的擴展。
-
簡單
實施OData
如果需要實施OData服務,需要完成以下四個部分:
-
OData模型
定義數據結構,一般發生在后端系統。
-
OData協議
支持CRUDQ(創建,讀取,修改,刪除,查詢)功能,數據的傳輸可以使用XML或者JSON。
-
OData客戶端庫
保證了客戶端能夠使用庫函數方便的訪問OData服務。注意,客戶端庫並不是必須的,但是盡量有,這樣可以節省大量的編碼工作。
-
OData服務
可以最終被客戶端訪問的服務。
OData服務的結構
- 服務文檔(Service Document)
- 服務元結構文檔(Service Metadata Document)
以上兩種文檔包含了:
- 實體(Entity)
- 實體類型(Entity Type)
- 實體集合(Entity Set)
- 屬性(Property)
- 導航屬性(Navigation Property)
- 關聯(Association)
OData的操作
-
創建
HTTP請求類型: POST
成功返回:201
-
讀取(包括單條讀取-read_entity,多條讀取read_entityset)
HTTP請求類型:GET
成功返回:200
-
更新
HTTP請求類型:PUT
成功返回:204
-
刪除
HTTP請求類型:DELETE
成功返回:204
-
查詢
HTTP請求類型:GET/POST
成功返回:200/201
查詢操作清單:
操作 查詢方式 篩選 $filter 排序 $orderby 客戶端換頁 $top,skip,inlinecount 數據量 $count 嵌入內容 $expand 格式化 $format
OData 在SAP中的方案
SAP對於標准的OData進行了擴展,特別是在對於字段屬性定義上,如果熟悉SAP系統的人都知道SAP系統表中的字段定義往往很難理解,SAP的擴展中就包括了使用字段的描述作為OData的屬性進行命名。
SAP對於OData的支持擴展包括:
- HTTP返回碼可以自定義
- CRUD的支持
- CUD多媒體文件的支持
- 序列化處理
- 深層結構處理
- Merge/patch的支持
- Paging,filter的擴展支持
OData在SAP各種產品中的使用:
- SAP Fiori
- SAP Jam
- SAP Netweaver Portal
- SAP HANA
總結
本文簡單的過了一下OData,也大概看了一下SAP中OData的使用,在接下來的一篇文章中會介紹Gateway的基本架構。
作者:翱翔雲天SAP
鏈接:https://www.jianshu.com/p/e254fd74cff9
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。