Web API , Odata breeze.js



Lion@Lai

科技日新月異

Javascript竟然變成顯學

這年頭的全端工程師



一定要會Javascript

如果都用JS那資料要怎麼拿?!


來統一介面吧

Web API!!

但查詢介面好像有點難搞

WebAPI

API的力量來自工程師的血量

public product Get(string parma1)
.
.
public product Get(string parma1, string parma2)
.
.
public product Get(string parma1, string parma2, ...... ,string parmaN)

換個方式

public product Get(SomeSerachModel parma)


這樣搞定了吧!!

但...






public product Get(SomeSerachModel param)
{
    if(param.param1){
    }
    if(param.param2){
    }
    ...
    if(param.paramN){
    }
}

為什麼不能有一個

單純的查詢介面


你的願望微軟聽到了

ODATA


提供資料存取的介面
還有最重要的查詢介面

並且建構在RESTful上!!

怎麼查

http://demo.miniasp.com/odata/products

看起來就跟WebAPI一樣阿!!

http://demo.miniasp.com/odata/products?$filter=StoreId eq 241

有共用的查詢介面ㄟ!!

那複雜點的呢

http://demo.miniasp.com/odata/products?$top=10&$filter=Id eq 24&$filter=StoreId eq 241&$filter=StoreType eq 0&$inlinecount=allpages

這是給人看的嗎?!

滿天都是ORM了

難道沒有好一點的介面嗎


永遠會有好心人




他將Odata包裝成ORM


透過產生後端Model的Metadata
BreezeJS在前端建立一個JS的ORM
就像EF一樣!!

並且將查詢語法包裝起來
            var p1 = new breeze.Predicate("Id", "==", id);
            var p2 = breeze.Predicate("Enable", "==", false);
            var p3 = breeze.Predicate("ItemType", "==", 2);
            var predicate = p1.and(p2).and(p3);
 
            var query = breeze.EntityQuery
            .from("Products").where(predicate);

看起來好酷啊!!


請下載

這是breeze + angularjs 做出來的一個template

直接看程式碼吧!!


Demo Time!!

人生總不是那麼美好

好心人未必不會寫出Bug程式!!

Bug Demo


謝謝大家

Web API, ODATA, BreezeJS

By lionlai

Web API, ODATA, BreezeJS

  • 1,079