日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【学习笔记】ODATA

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【学习笔记】ODATA 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ODATA

因為在最近的閱讀中看到了大量ODATA這個名詞,都說OData是一種非常簡單的接口協議,結構簡單,操作簡單,OData是實現REST最好的方法,而REST是一種web協議框架,類似于WebService和SOAP,但是提到它的一些特點和具體的實現方式卻又知之甚少,所以很有必要借機會找度娘了解一下,以下本篇為個人整理文檔,如有偏誤,敬請指出。

OData即開放數據協議(Open Data Protocol)是一種描述如何創建和訪問Restful服務的OASIS標準(經ISO/IEC批準),該標準由微軟發起。OData 是一個開源的協議,可以幫助您在創建 RESTFUL APIs期間專注于商業邏輯, 而不必擔心用哪種方法來定義請求和響應頭、狀態代碼、HTTP方法、URL 規則、媒體類型、負載格式、查詢選項等。OData還提供追蹤變更事項、定義可重復使用的程序的功能/動作、發送異步/批量請求的指南(https://www.odata.org/)。

通俗來說,?就是無論哪個組織構建的Restful API,只要其符合OData標準,其他組織就可以按照OData標準中定義的方式去使用這個API獲取/修改資源。這個可以類比SQL標準之于RDBMS關系,無論什么關系型數據庫,如果其聲稱支持SQL 標準,任何人就可以使用標準SQL查詢語句來查詢數據。也可以將Odata協議實現到一個通用的類庫中,通過這個類庫去創建和訪問Restful API可以減少開發人員的工作量。其中官網上有很多這樣類似的組件。

OData 協議遵循以下五種設計原則:

  • 數據多樣性存儲:在一個服務里面可以定義多種數據的存儲;
  • 向下兼容:客戶端和服務端可以使用不同版本的OData服務,每個服務都可以向下兼容;
  • REST原則:遵循REST原則;
  • 容易擴展:如果需要額外的服務能夠進行簡單的擴展;
  • 簡單;

簡單來說OData就是用來查詢和更新數據的一種Web協議,提供了把存在于應用程序中的數據暴露出來的方式,OData應用Web技術如HTTP、Atom發布協議(AtomPub)和JSON等來提供對不同應用程序、服務和存儲的信息訪問。這些數據源包括但不限于:關系數據庫、文件系統、內容管理系統和傳統的Web站點等。除了提供一些基本的增刪查改操作,也提供了一些高級操作,類似于過濾數據和實體的導航。

如果需要實施OData服務,需要完成以下四個部分:

  • OData模型:定義數據結構,一般發生在后端系統;
  • OData協議:支持CRUDQ(創建,讀取,修改,刪除,查詢)功能,數據的傳輸可以使用XML或者JSON;
  • OData客戶端庫:保證了客戶端能夠使用庫函數方便的訪問OData服務。注意,客戶端庫并不是必須的,但是盡量有,這樣可以節省大量的編碼工作;
  • OData服務:可以最終被客戶端訪問的服務;

OData常用操作:

操作

URL

說明

$filter

http://localhost:8090/api/Meetings?$filter=ProductName eq 'Tofu'

根據表達式的狀態返回結果(返回ProductName 等于TofuProducts

$orderby

http://localhost:8090/api/Meetings?$orderby=ProductName

根據結果排序(根據ProductName列排序)

$skip

http://localhost:8090/api/Meetings?$skip=10

越過結果中的n條數據,常用于分頁

$top

http://localhost:8090/api/Meetings?$top=10

返回結果中的前n條記錄,常用于分頁

$select

http://localhost:8090/api/Meetings?$filter=ProductName eq 'Tofu'&$select=ProductName,UnitPrice

選擇需要返回的屬性

$expand

http://localhost:8090/api/Meetings?$expand=Supplier

返回Products中包含的導航屬性(關聯屬性)Supplier

$inlinecount

http://localhost:8090/api/Meetings?$inlinecount=allpages

向服務器獲取符合條件的資源總數(分頁的total值)

函數操作:

contains(包含)

$filter=contains(Name,'sap')
Name中包含”sap”的所有信息,這樣就達到了模糊查詢的效果,只輸入其中的幾個字符便可查到所有包含這幾個字符的信息;

not contains(不包含)

$filter=not contains(Name,'sap')
Name中不包含”sap”的所有信息,與contains效果相反;

startswith(以xx開頭)

$filter=startswith(Name, 'sap')
Name以”sap”開頭的所有信息;

endswith(以xx結尾)

$filter=endswith(Name, 'sap')
Name以”sap”結尾的所有信息;

length(字符長度)

$filter=length(Name) eq 10
Name中字符長度等于10的所有信息;

indexof(字符長度等于x索引為n開始包含xx字符)

$filter=indexof(Name, 'sap') eq 10
Name從第11個字母開始包含”sap”的所有信息;

replace(替換)

$filter=replace(Name, 'a', 'p') eq 'sap'
Name等于”sap”的信息中”a”被”p”替換;

substring(從第n個字符開始)

$filter=substring(Name, 1) eq 'sap'
Name從第2個字符開始是”sap”的所有信息
$filter=substring(Name, 1, 2) eq 'sa'
Name的第2個和第3個字符是”sa”的所有信息;

tolower(轉換為小寫)

$filter=tolower(Name) eq 'SAP'
Name等于”SAP”的字符都轉換為小寫;

toupper(轉換為大寫)

$filter=toupper(Name) eq 'sap'
Name等于”sap”的字符都轉換為大寫;

trim(去空格后)

$filter=length(trim(Name)) eq length(‘sap’)
Name去掉空格后依舊等于”sap”的所有信息;


?

我們在學習SAPUI5的時候可以使用免費的OData:

https://services.odata.org/V2/Northwind/Northwind.svc/

https://services.odata.org/V3/OData/OData.svc/

總結

以上是生活随笔為你收集整理的【学习笔记】ODATA的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。