一、概述
時間也算充足,抽點時間總結下odata的常用的使用方式,開放資料協議
(odata)是乙個查詢和更新資料的web協議。odata應用了web技術如http、atom發布協議(atompub)和json等來提供對不同應用程式,服務和儲存的資訊訪問。除了提供一些基本的操作(像增刪改查),也提供了一些高階的操作類似過濾資料和實體的導航。odata擴充套件了上述的協議但是不是取代他們。他可以被xml(atom)或者json取代但是odata的重要在於它符合rest原則。在某種意義上,它建立在'簡單'的rest http 服務上,並且有著清晰的目標——簡化和標準化我們操作和查詢資料的方式。如果你過去在給你的rest服務建立搜尋、過濾、或者分頁api的時候感覺很麻煩,那麼odata將是乙個不錯的選擇。
二、web api使用:
1、通過nuget獲取 microsoft.aspnet.webapi.odata 第三方外掛程式dll,microsoft.aspnet.webapi.odata提供可一系列的類擴充套件了web api。
2、webapiconfig進行下面**新增,開啟odata支援;
);//啟用odata查詢
$format
", "
json
", "");
"$format
", "
xml", "");
config.addodataqueryfilter();
} }
}
備註:新增命名空間:using system.net.http.formatting;
功能說明:這段**支援webapi資料介面顯示可以以xml顯示也可以以json格式顯示,呼叫的時候如下:
http://localhost:port/api/projectmanagent?$format=json 此處以json格式顯示結果
http://localhost:port/api/projectmanagent?$format=xml 此處以xml格式顯示結果
3、編寫介面 api control
新增control **如下:
//[enablequery(maxtop = 100)] 配置呼叫限制專案
[enablequery(allowedqueryoptions = allowedqueryoptions.all,maxtop =100, maxskip = 200,pagesize =2,allowedfunctions =allowedfunctions.all)]
public iqueryableget()
}}
4、介面呼叫說明:
下表列舉了一些常用的odata操作:
操作url
說明$filter
根據表示式的狀態返回結果(返回productname 等於tofu的products)
根據結果排序(根據productname列排序)
越過結果中的n條資料,常用於分頁
返回結果中的前n條記錄,常用於分頁
選擇需要返回的屬性
返回products中包含的導航屬性(關聯屬性)supplier
向伺服器獲取符合條件的資源總數(分頁的total值)
通過上面**的內容,我們還可以通過組合查詢條件來實現複雜的查詢。
常用查詢舉例:
示例1:列出所有product
示例2,查詢products,只列出name,price例
示例3:列出products(只有列name,price),包括supplier
示例4:過濾products,只顯示分類為test的資料
示例5:過濾products,只顯示分類為test的資料,並排序
$filter的其它的使用方式:
過濾category=test
過濾price小於10
過濾5<=price>=15
4.還可以使用資料庫函式如:
$filter=substringof('zz',name)
$filter=year(releasedate) gt 2005
5.關於排序:
$orderby=price
$orderby=price desc
$orderby=category,price desc
6.還有一些過濾器如:
$skip,$top,$inlinecount等等
五、後續問題:
針對查詢結果時間的輸出,目前輸出的格式是:
NSIS KillProcDLL外掛程式 擴充套件使用
官網文件 解除安裝程式時,結束正在執行的應用程式 killprocdll killproc process name.exe 使用預設提供的killproc方法是強制結束程序,這可能導致意外的情況發生,例如資料丟失,程式崩潰等。為了防止上述的情況,我們需要向退出的應用發生指令,讓其完成退出所需的正常...
php spl 擴充套件,PHP SPL擴充套件庫簡單使用
1.autoload 這是乙個自動載入函式,在php5中,當我們例項化乙個未定義的類時,就會觸發此函式。看下面例子 myclass.php class myclass public function construct echo myclass init ed successfuly index.p...
Python sorted排序 key擴充套件使用
1 內建排序函式 2 reversed操作 3 擴充套件用法key 當我們要對一串數字或者字母,進行大小比較排序時,如果少數個我們可以自行排序,但是當數字多達幾十個,甚至幾百個時,人為排序就會使得效率低下,甚至有可能出錯。內建函式sorted 就解決了這一問題。例項解釋 為表排序 lst 5,3,7...