OData是什么
Open Data Protocol(OData),程序數據庫格式標准化的開放數據協議,以簡單和標准的方法,建造或消除可查詢和可操作的RESTful API,是用來查詢和更新數據的一種Web協議,其提供了把存在於應用程序中的數據暴露出來的方式。Apache Olingo 是個 Java 庫,用來實現OData。
OData產生契機
已知REST只是一種設計Web服務的思想,不是一種標准化的協議,因此會導致各家公布的RESTful API在統一通用方面的欠缺。OData就是為了彌補這種欠缺而被提出來的標准協議。
實施OData
如果需要實施OData服務,需要完成以下四個部分:
-
OData模型
定義數據結構,一般發生在后端系統。
-
OData協議
支持CRUDQ(創建,讀取,修改,刪除,查詢)功能,數據的傳輸可以使用XML或者JSON。
-
OData客戶端庫
保證了客戶端能夠使用庫函數方便的訪問OData服務。注意,客戶端庫並不是必須的,但是盡量有,這樣可以節省大量的編碼工作。
-
OData服務
實現了OData協議,可以最終被客戶端訪問的服務。
- OData服務至少向外暴露一下三個接口:
1: {host}/: 獲取實體列表
2: {host}/$metadata: 獲取實體元數據
3: {host}/{entityId}: 獲取對應實體的數據 (標准查詢參數: ?$select=id,name&$filter=id eq 1 and age gt 20)
OData服務的結構
- 服務文檔(Service Document)
- 服務元結構文檔(Service Metadata Document)
以上兩種文檔包含了:
- 實體(Entity)
- 實體類型(Entity Type)
- 實體集合(Entity Set)
- 屬性(Property)
- 導航屬性(Navigation Property)
- 關聯(Association)
OData的使用
一、函數的使用
- contains(包含)$filter=contains(Name,'momo')
- not contains(不包含)
- startswith(以xx開頭)
- endswith(以xx結尾)
- length(字符長度等於x)
- indexof(字符長度等於x索引為n開始包含xx字符)
- replace(替換)
- substring(從第n個字符開始)
- tolower(轉換為小寫)
- toupper(轉換為大寫)
- trim(去空格后)
二、$filter運算符
eq(等於);ne(不等於);gt(大於);ge(大於等於);lt(小於);le(小於等於);and(且);or(或);()(分組)
三、$orderby排序
http://localhost:5000/userInfo?$orderby=name desc,EventName asc
四、$top,skip,inlinecount客戶端換頁
http://localhost:5000/userInfo?$top=5&$skip=1&$inlinecount=allpages
五、$count數據量
六、$expand嵌入內容
七、$format格式化
八、$select查詢字段的列表(和sql中select后面的表達式一樣)