ODATA WEB API(一) 擴充套件使用

2022-02-20 01:03:13 字數 4438 閱讀 3501

一、概述

時間也算充足,抽點時間總結下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...