翻翻以前的哦feed看到你的問題,試著回答下吧。
A. 觀點(diǎn)1中這個(gè)“ID”如何定義?
我粗略看了下原文,文中并沒有提及一定要用URI,不能用URL這種觀點(diǎn)。URL和URI的介紹很多,怎么可能沒有一個(gè)明確的說服呢?
而且,無論用URL或者URI來說明ID如何定義這章節(jié)都不沖突。就跟說北京有故宮博物館和中國(guó)有故宮博物館一樣的道理。
B. 要為那些“事物”定義ID?
你的問題是“那么對(duì)于這種模式的資源,REST又如何來表示呢?”
我試著回答,假設(shè)你有個(gè)查詢需要查詢所有姓為“張”,并且出生日期在1950年前的。那么定義URL的時(shí)候,這種集合性的資源ID是后臺(tái)解析這個(gè)查詢邏輯的地方定義的。舉個(gè)例子,老板給你一個(gè)feature讓你做,這個(gè)feature要做很多邏輯。那么老板給你講的時(shí)候,不會(huì)把這個(gè)case的邏輯說一遍,只會(huì)告訴你case名稱,這個(gè)case名稱就是ID。不要想著把整個(gè)case的實(shí)現(xiàn)邏輯在URI中體現(xiàn),僅僅定義個(gè)ID即可。
C. 使用鏈接指向任何可以標(biāo)識(shí)的事物
不清楚具體哪個(gè)地方不理解,其實(shí)這個(gè)不用較真。如果你以前寫web的時(shí)候就已經(jīng)follow了些類似的REST風(fēng)格,那么相比就是沒太大的區(qū)別。
而且就REST的風(fēng)格來講,國(guó)外的一些大牛們也吵來吵去的。所謂的風(fēng)格,不局限于一定要按照某種方式去寫才叫REST。理解概念,將其應(yīng)用到web開發(fā)中去,外面的人看懂沒看懂不一定強(qiáng)制要求,Team內(nèi)能達(dá)成一致并相互理解就算成功。
D. “標(biāo)準(zhǔn)方法”是否夠用?
既然叫做標(biāo)準(zhǔn)方法,就是就是解決web開發(fā)中一些標(biāo)準(zhǔn)問題,例如CRUD。
當(dāng)然這個(gè)不是絕對(duì)的,我曾經(jīng)看到過一些REST實(shí)踐的人不用DELETE,GET來做,僅僅用POST就可以實(shí)現(xiàn)REST開發(fā),可向其概念與應(yīng)用存在著并非絕對(duì)的關(guān)系。
你說的是否夠用我想能你從業(yè)務(wù)角度考慮問題,不是先選技術(shù),再去解決特定業(yè)務(wù)問題。而是從業(yè)務(wù)角度尋找最佳技術(shù)解決方案。
如果業(yè)務(wù)系統(tǒng)很大,REST無法完美的解決相應(yīng)case問題,或者說能夠解決但會(huì)很復(fù)雜。那么你可以考慮基于WSDL的WebService來實(shí)現(xiàn),很多文章都在說兩個(gè)的區(qū)別和應(yīng)用場(chǎng)景,你可以參考一下。
E. 無狀態(tài)通信如何實(shí)現(xiàn)
這個(gè)我這樣理解,跳出基于HTML4標(biāo)準(zhǔn)的Web開發(fā)方式。想想如下場(chǎng)景:
1. 基于CS模型的客戶端開發(fā)方式,例如用WPF,SWT,WinForm等。
2. 基于RIA Web框架的開發(fā)訪方式,例如Silverlight, Flash, JFX等。
3. 基于HTML5的開發(fā)模式。
4. 基于腳本語言的開發(fā)模式,例如用Ruby或者Grovy訪問web等。
以上拙見,就叨叨這些吧。
回復(fù) 更多評(píng)論