Saturday, April 6, 2024

OData

 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 - the Best Way to REST


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)

GitHub - DMTF/Redfish-Service-Validator: The Redfish Service Validator is a Python3 tool for checking conformance of any "device" with a Redfish service interface against Redfish CSDL schema


OData-JSON

OData 定義一些特定的property 來擴展 JSON。 舉一些常見的例子,詳細可以參閱Spec

  • @odata.id:entity-id與實體的規範URL相同,通常是必須存在的
  • @odata.count:計數控制資訊僅出現在回應中,可以註釋在任何集合中

定義 GitHub - openbmc/smbios-mdr


No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能