當網頁要讀取一個很大量的資料時,通常都會透過分頁的方式來顯示資料。 如果透過WebApi+OData的特性來做分頁,作法很單純 設定 WebApiConfig.cs
1 | //加入 |
假設原本的API寫法如下
1 | [Route("api/Customer")] |
改成
1 | [Route("api/Customer")] |
那在client端要呼叫api的url中,在加上OData的查詢語法來取得所要的資料區段,來達成分頁的效果
| 指令 | 說明 | 範例 |
|---|---|---|
| top | 結果挑出最前面的幾筆 | ?$top=3 |
| skip | 略過幾筆。可用於分頁顯示 | ?$skip=10 |
| orderby | 排序 | ?$orderby=SupplierID,ProductID |
| filter | 篩選 | |
| gt : > , 大於 | $filter=ProductID gt 10 | |
| lt : < , 小於 | $filter=ProductID lt 10 | |
| ge : >=, 大於等於 | $filter=ProductID ge 10 | |
| le : <=, 小於等於 | $filter=ProductID le 10 | |
| eq : =, 等於 | $filter=ProductID eq 10 | |
| ne : <>, 不等於 | $filter=ProductID ne 10 |
參考資料: http://msdn.microsoft.com/en-us/library/windowsazure/gg312156.aspx
如果要利用OData取得所有的資料筆數時,上述的寫法沒有辦法做到,所以要稍微改寫一下原本的寫法
1 | [Route("api/Customer")] |
要傳入的東西是一樣的,但是回傳的結果會變成
1 | { |
所以在接收時要再調整
當$filter的查詢欄位是guid時
所送出的值前面要加上 guid 的關鍵字
1 | ?$filter=field eq guid'<value>' |