前言
??? ??? Http協議除了 get 和 post ,還可以做更多的事情,一直以來,很多的開發
人員都忘了這一點。
??? ??? 但是,如果你知道瀏覽器其實只支持 get 和 post, 那么你就不會感到驚奇
了。
??? ??? get 和 post 是http請求從客戶端傳到服務器端的兩個方法。除了這兩個,
http協議還知道 put和delete 方法,這兩個方法告訴服務器創建或者刪除一個
WEB的資源。
??? ??? 這個教程的目的,就是擴展開發人員的視線,去了解http協議的 put 和
delete 方法。我們常說的 REST 這個術語,精華就是 http 協議中 get, post,
put, delete 四個方法。Rails 從1.2版本開始,就支持 REST 這個技術了。
這個教程一開始會簡短的介紹REST的背景和概念,接著介紹為什么要開發
REST風格的Rails應用。
??? ??? 使用 scaffolding,這是可以幫助我們產生 controller 和 model 細節的工
具,對我們的進行REST應用的開發很有幫助。REST的應用中作用非常重大的路由
技術,將會在接下來的章節介紹。“嵌套的資源”這個章節,會介紹一下REST的
高級應用,告訴大家資源如何以 父 - 子(繼承關系)的關系組合在一起,同時不
違反的REST 風格的路由設計。教程的后面,還會介紹一些REST的內容,AJAX,
REST風格的應用的測試方法,還有“ActiveResource”-- REST的客戶端部分。
??? ??? 在我們開始之前,再啰嗦最后一句:要讀這個教程,最少你要懂一點Rails開
發的基本知識,否則的話,先去學習學習吧:)
什么是REST?
??? ??? REST這個術語,是Roy Fielding 在Ph.D.論文中提出來的,它的全稱是
“Representational State Transfer.”
??? ??? REST描述了這么一個架構:利用標準的http 協議中的 get, post, put,
delete 來請求和操作網絡上的資源。
??? ??? 在REST中,資源的意思就是一個 基于URL實體,客戶端可以通過 http協
議來和它進行交互。這個資源可以用各種形式來展示給客戶端,如 HTML,XML,
RSS,主要依賴于客戶端的調用方式。并不像以往的Rails開發那樣,用REST方
式,一個 url 不是指定一個 model 或者 action, 一個 url 僅僅是資源的本身而
已。

來保證這三個是不同的資源。
??? ??? 注意:URL并沒有表明要對這三個資源進行什么操作。
??? ??? Rails 應用中,一個資源是由 controller 和 model 組成的。那么從
技術的角度來看,圖 1.1中的3個資源"project",就是針對3個請求,而表現出
來的 Project model(也就是ActiveRecord類了)的3個實例形式。
為什么使用REST
??? ??? REST所帶給我們的,是Rails 的理論上的提升,下面的一些特性,將會使
我們清晰地了解這一點。
??? ??? a) 簡明的Url. REST 風格的URL是為了定位一個資源,而并不是調用一
個action. 在REST中,URL經常以這種方式出現:先是controller的名稱,然后
是資源的id。請求的操作隱藏在URL 里,并且通過 http 協議來表示(get, post,
put, delete 四個動作)。
??? ??? b) 傳回給客戶端不同格式的內容。我們通過一種方式來編寫 controller,
其中的action應該都可以返回給客戶端不同的格式的結果。對于同一個 action,
即可以返回給客戶端 html, 也可以返回給xml,也可以返回給 RSS,這依賴于客戶
端想要什么。REST應用就好像變得能處理客戶端好多的命令。
??? ??? c) 更少的代碼。因為一個action 可以返回客戶端的各種需要格式,這就
減少了(DRY don’t repeat yourself),這也就讓 controller 里的代碼減少了。
??? ??? d) 面向 CRUD 的controller. 所謂CRUD 就是Create,Retrieve,Update,Delete.
controller 和 model 融合到一起,每個controller都會響應某個
model的操作。
??? ??? e) 讓系統設計更簡單。REST風格的開發方式,會使系統結構更加清晰,而
且容易維護。為什么使用REST?
新玩意
??? ??? 如果你覺得 REST 讓你之前所有的開發經驗變得毫無作用,別擔心,那是
不可能的~ 因為REST仍然是基于 MVC 風格的。從技術角度來看,REST中的“新
玩意”可以歸納為以下幾點:
??? ??? a) 在 controller 中的 respond_to 的用法。
??? ??? b) 對于 link 和 form 的新的 helper 方法。
??? ??? c) 在 controller redirect 中的 url 方法。
??? ??? d) 在 routes.rb 文件中,新的路由定義方法。
好了,今天就到這了,明天以實例說明。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
