今天終于看完了Roy關(guān)于REST的論文,6個(gè)小時(shí),不到100頁的文檔,當(dāng)真是相當(dāng)?shù)幕逎?,坦白說,看得很仔細(xì),但也不是很理解,到底什么是REST?直接我看到了這句:
“HTTP 并不是被設(shè)計(jì)為一種傳輸協(xié)議(transport protocol),它是一種轉(zhuǎn)移協(xié)議(transfer protocol)(譯者注:非常不幸,HTTP剛剛傳入我國時(shí),即被翻譯為“超文本傳輸協(xié)議”, 因?yàn)?#8220;transport”和“transfer”在中文中都具有“傳輸”的含意,之后以訛傳訛貽害無窮。為 了以示區(qū)別,譯文中一律將“transfer”翻譯為“轉(zhuǎn)移”)” -- 原文
我才恍然醒悟,原來REST只是點(diǎn)鏈接,跳轉(zhuǎn)頁面呀,非要說成狀態(tài)轉(zhuǎn)移,都是名詞惹得禍。這算是對REST最簡單的理解了,我一直以為REST是一種WEB 應(yīng)用程序架構(gòu),以至于會(huì)有JSR 311和Jersay。但從論文中所看REST就是WEB本身的架構(gòu)風(fēng)格吧,那么基于WEB的應(yīng)用都至少使用了REST 的一些因素。試問哪個(gè)網(wǎng)站不是基于HTTP,不是點(diǎn)鏈接,跳頁面呢?那些所謂RESTful的應(yīng)用,或許就是支持更多REST特性的應(yīng)用吧,搞得很復(fù)雜似的。
這篇論文寫作時(shí)間是2000年,論文里還引用了Berners Lee關(guān)于 WEB的描述,“Web的主要目的是旨在成為一種共享的信息空間(a shared information space),人們和機(jī)器都可以通過它來進(jìn)行溝通。” 但十年過去了,WEB改變了很多,WEB的功能再也不是簡單的信息共享了。WEB在Berners Lee的時(shí)代,或許只有科學(xué)家可以在網(wǎng)上發(fā)布消息,但現(xiàn)在已經(jīng)是信息爆炸的信息時(shí)代了,每個(gè)人都可以是信息的生產(chǎn)者,以至于這些信息中充斥著垃圾,給了搜索引擘機(jī)會(huì)。WEB上越來越多五花八門的應(yīng)用,網(wǎng)上購物,銀行,REST要求無狀態(tài),怎么可以無狀態(tài)呢?
所以我覺得REST的模型并不對,從技術(shù)的角度建模,為了架構(gòu)風(fēng)格而對現(xiàn)實(shí)應(yīng)用加約束。JSR 311和Jersay都不用看了。 但REST關(guān)于語義URL的論述是極其有道理的,我相信有一天可以通過URL對現(xiàn)實(shí)世界建模。