RESTful API是目前比較成熟的一套互聯(lián)網(wǎng)應(yīng)用程序的API設(shè)計理論,規(guī)范了服務(wù)端資源的定義及訪問。我們團(tuán)隊(duì)服務(wù)端就采用了RESTful。
可是在現(xiàn)實(shí)開發(fā)過程中,還是有些問題。
客戶端在獲取資源的時候,可能不同地方需要資源的不同的屬性,而服務(wù)端常常會把幾乎所有屬性全部返回,這在App上會造成一些流量的浪費(fèi),譬如我要加載一個普通的產(chǎn)品列表,需要產(chǎn)品圖片、產(chǎn)品名稱、價格、庫存等屬性,而另一個瀏覽歷史可能只需要名稱和價格,這總不能寫兩個API吧?或者說附帶一個請求參數(shù)告訴服務(wù)端要返回哪些屬性,這倒行得通,可很不優(yōu)雅。
重要的是客戶端還會有一個界面可能需要調(diào)用多個不同類型的資源的情況,最經(jīng)典的就是電商App,個人中心界面里,既需要用戶的一些信息,又要查詢收藏數(shù)量、關(guān)注數(shù)量、足跡數(shù)量,又要查詢不同狀態(tài)下的訂單數(shù)量,或者下方還有推薦商品列表??蛻舳艘粋€界面請求多個資源URI會降低客戶端的體驗(yàn)自然不好,或者需要服務(wù)端需要額外提供適配客戶端的API能解決,可一旦界面有變化這些接口也要重新做適配。
這些問題不是很重要,可問題多了,客戶端開發(fā)和服務(wù)端開發(fā)要掐架。
有沒有相對好的解決辦法呢?
本人不才,搞了個 Jsonql(https://github.com/liyanjie8712/Jsonql),意圖給RESTful按上一對翅膀。
Jsonql是什么,咱給它起了個高大上的名字,Jsonql = Responsive Json Query Language,響應(yīng)式Json查詢語言,客戶端要什么樣的數(shù)據(jù),由客戶端來決定。服務(wù)端只提供資源及支持的查詢函數(shù),客戶端編寫查詢請求,服務(wù)端解析并組裝數(shù)據(jù)返回給客戶端。這下服務(wù)端一勞永逸,客戶端界面及數(shù)據(jù)綁定隨便折騰去吧,挖哈哈~
先來看看Jsonql的語法:
變量的定義:$變量名
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26