OData(The Open Data Protocol) 是一種基於REST的數據訪問方式,該標準由微軟發起,前三個版本1.0、2.0、3.0是微軟開放標準,第4.0版於2014年在OASIS投票通過成為 開放工業標準。
The Open Data Protocol (OData) enables the creation of REST-based data services which allow resources, identified using Uniform Resource Locators (URLs) and defined in a data model, to be published and edited by Web clients using simple HTTP messages.
This specification defines the core semantics and the behavioral aspects of the protocol.
OData‑URL
Odata定義了一組推薦的(但不是必需的)規則,用於構建URL以識別 OData 服務公開的數據和元數據,以及一組保留的URL查詢字串運算符。
- Service root URL: url 的服務根是服務的基本 url。 當對該 url 發出 GET 請求時,它將返回一個服務文檔,該文件定義了通過該服務可用的所有資源。 Redfish 的Service root URL 是 /redfish/v1 這在redfish spec中有定義
- Resource path : REST 定義的資源是可通過 HTTP 使用標準 GET、POST、PUT、PATCH 和 DELETE 方法訪問的物件。
- Query options: 查詢選項本質上是標準化的查詢字串參數,可以傳遞給 OData 服務以對請求的資源運行查詢。 例如對資源的filter, count, skip, order, search 和 format。 所有 OData 查詢選項都以 $ 符號為前綴,並且不區分大小寫。
另外在service root URL後面加上$metadata可以看到Service的實體模型(entity model),內容根據 [OData-CSDLJSON] 或 [OData-CSDLXML]
OData-CSDLXML
OData 服務是根據實體模型來描述的。 CSDL(Common Schema Definition Language) 使用XML(Extensible Markup Language ) 定義了由 OData 服務公開的實體數據模型的表示法,以及來自 W3C XML 模式定義語言的進一步構建塊 (XSD) 。
簡單來說,就是定義我們常聽到的Redfish的Schema和Property,這樣消費者可以知道它會得到的訊息格式,進而先處理(微軟有些tool可以直接將CSDL轉為結構或資料庫),這部分DMTF有CSDL的教學文件,同時也有一個Redfish Service Validator 的tool 來驗證我們的Redfish Services有沒有符合定義的CSDL
Redfish_School-Introduction_to_CSDL (dmtf.org)
OData-JSON
OData 定義一些特定的property 來擴展 JSON。 舉一些常見的例子,詳細可以參閱Spec
- @odata.id:entity-id與實體的規範URL相同,通常是必須存在的
- @odata.count:計數控制資訊僅出現在回應中,可以註釋在任何集合中
定義 GitHub - openbmc/smbios-mdr
No comments:
Post a Comment