2015年9月26日 星期六

Enhance Web Api with OData

 OData     Open Data Protocol      Web Api  


背景


其中Restful service (Web Api)可說是串接整個架構的重要腳色~
OData是個人覺得很喜歡的Protocol,也可以應用在Web Api上,

PS.一段時間沒有用了,趁著這次在公司內部和同仁介紹及討論一些.NET開發架構的issue時,複習一下也可以提供參考;

本篇主要說明如何在Web Api上啟用OData功能~

關於OData的詳細介紹請參考

l   MSDN




環境

l   Visual Studio 2015 Ent.
l   Fiddler


實作


Web Api加入以下Nuget套件:



調整Http Get Method

Api ControllerGET方法中啟用OData的方式:
1.  回傳型態必須為 IQueryable
2.  加上一個[Queryable] attribute

範例:

[HttpGet]
[Queryable]
public IQueryable<AdUser> Get()
{
            List<AdUser> adUsers = new List<AdUser>();
            adUsers.Add(new AdUser { Cn = "JB.Lin", Sn = "Lin", GivenName = "JB", DisplayName = "The Force JB", Status = AdUserStatusEnum.New.ToString() });
            adUsers.Add(new AdUser { Cn = "Lily.Yang", Sn = "Yang", GivenName = "Lily", DisplayName = "The Force Lily", Status = AdUserStatusEnum.Updated.ToString() });
            adUsers.Add(new AdUser { Cn = "Leia.Lin", Sn = "Lin", GivenName = "Leia", DisplayName = "Leia Skywalker", Status = AdUserStatusEnum.Updated.ToString() });


            return adUsers.AsQueryable();
}

That’s all!

How to use OData in your request

RequestURL上加上對應之參數即可!
例如排序:
http://localhost:9999/api/adcenter/Get?$orderby=DisplayName

至於可支援的方法和條件相當的多元,請參考官方 (2015/9目前為4.0)


以上面加入排序條件的URL為例,下圖一為不下任何條件,圖二為加入條件的結果。

(圖一) http://localhost:9999/api/adcenter/Get



(圖二) http://localhost:9999/api/adcenter/Get?$orderby=DisplayName

可以看到查詢的結果以”DisplayName”做排序了~



Reference


l   OData.org







沒有留言:

張貼留言