JSON-RPC比RESTful API的比較

先說結(jié)論

JSON-RPC比RESTful API好很多夷野。

解釋

我厭惡restful API如同我厭惡OOP忧设;但與其說我厭惡restful,倒不如說我厭惡鼓吹restful API的一些偽·程序員赌渣。

很多鼓吹restful API的程序員李剖,實(shí)際上并不理解restful的設(shè)計(jì)理念略吨,純粹是在人言亦言励饵,隨便看了幾篇網(wǎng)文在說restful飞盆,自己便也更著鼓吹肿嘲。

做為一個(gè)合格的技術(shù)人員融击,最基礎(chǔ)的要求是要對(duì)自己所使用的技術(shù)有了解,明白各種技術(shù)的適用場景雳窟,然后因地制宜尊浪。

restful首先是要求必須把所有的應(yīng)用定義成為“resource”,然后只能針對(duì)資源做有限的四種操作封救。

這是對(duì)API一個(gè)非常糟糕的抽象拇涤,有太多現(xiàn)實(shí)中需要的API,無法順當(dāng)?shù)娜谌氲絩estful所定義的規(guī)范中誉结。

比方說鹅士,user login / resetpassword等等。

restful的信徒惩坑,他們會(huì)說可以根據(jù)這個(gè)那個(gè)規(guī)范掉盅,把login / password等也納入為某種資源也拜,然后進(jìn)行增刪改查。這在我看來趾痘,純粹是在解決一些原本不存在慢哈,根本不需要解決的問題,純浪費(fèi)永票。

所有的接口卵贱,服務(wù)器端原本就存在有相應(yīng)的函數(shù),它們本來就有自身的命名空間侣集,接受的參數(shù)键俱、返回值、異常等等世分。

采用輕便的方式暴露出來即可编振。

無需把一堆函數(shù)重新歸納到“資源”,再削減腦袋把所有的操作都映射為“增刪改查”罚攀。

對(duì)應(yīng)到web上党觅,rpc的成熟方案非常多雌澄,有古老的soap斋泄,也有輕量的json rpc。

JSON rpc基本上僅是要求所有的請(qǐng)求必須有msg id镐牺,有函數(shù)名炫掐,然后可定義參數(shù),并且區(qū)分返回值與異常睬涧;也可定義『命名空間』來對(duì)函數(shù)模塊做劃分募胃。

這與大多數(shù)語言的模塊、函數(shù)定義相符畦浓,使用起來是非常便利的痹束。

很多json rpc是供web前端ajax調(diào)用,若前端調(diào)用抽象得當(dāng)讶请,調(diào)用遠(yuǎn)程API祷嘶,實(shí)際上與調(diào)用本地函數(shù)無甚區(qū)別。

實(shí)際上夺溢,json rpc也未必需要跟http綁定论巍,即便是在web上,它也可以走web socket风响,這樣子嘉汰,前端可以使用同一web socket管道批量發(fā)送請(qǐng)求,而服務(wù)器端亂序返回結(jié)果時(shí)状勤,前端也可以根據(jù)msg id做準(zhǔn)確的回調(diào)鞋怀。

websocket双泪,批量調(diào)用,亂序返回密似,這些都可以顯著提高API的輸出吞吐攒读,這些是在json rpc的設(shè)計(jì)考量內(nèi)。

調(diào)用更方便辛友,性能也更好薄扁,兩全其美是完全可能的。

想當(dāng)然的為了“快”废累,為了“簡單”就必須犧牲別的邓梅,這是嚴(yán)重的思維誤區(qū)。

有些方案邑滨,純粹就是糟糕的方案日缨。

restful API僅適用與業(yè)務(wù)非常簡單的場景,比方說掖看,就是為了提供少量數(shù)據(jù)表單的增刪改查匣距。而這種場景實(shí)在是太過簡單,實(shí)際中幾乎找不到哎壳。

其它優(yōu)秀的方案毅待?可以看看:

另外

發(fā)現(xiàn)老外一篇舊文:http://rob.conery.io/2012/02/28/someone-save-us-from-rest/ 推薦大家去看看~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市归榕,隨后出現(xiàn)的幾起案子尸红,更是在濱河造成了極大的恐慌,老刑警劉巖刹泄,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件外里,死亡現(xiàn)場離奇詭異,居然都是意外死亡特石,警方通過查閱死者的電腦和手機(jī)盅蝗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姆蘸,“玉大人墩莫,你說我怎么就攤上這事∑虻” “怎么了贼穆?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兰粉。 經(jīng)常有香客問我故痊,道長,這世上最難降的妖魔是什么玖姑? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任愕秫,我火速辦了婚禮慨菱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戴甩。我一直安慰自己符喝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布甜孤。 她就那樣靜靜地躺著协饲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缴川。 梳的紋絲不亂的頭發(fā)上茉稠,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音把夸,去河邊找鬼而线。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恋日,可吹牛的內(nèi)容都是我干的膀篮。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼岂膳,長吁一口氣:“原來是場噩夢啊……” “哼誓竿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起闷营,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤烤黍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后傻盟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嫂丙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年娘赴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跟啤。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诽表,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出隅肥,到底是詐尸還是另有隱情竿奏,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布腥放,位于F島的核電站泛啸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秃症。R本人自食惡果不足惜候址,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一吕粹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧岗仑,春花似錦匹耕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至炸卑,卻和暖如春欢际,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矾兜。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工损趋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椅寺。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓浑槽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親返帕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桐玻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容