Q: 所以,到底什麼是REST?
A: Representational State
Transfer的簡稱,中文翻譯一點都不重要,反正大家都叫他REST。簡單的說,就是將一個網站的運作模式全部利用Http的介面來做互動,並且針對
的是網站所提供的「資源」而不是「網頁服務」。所以這是一種Design Pattern,而不是某種開發技巧。
Q: 資源是啥?
A: 資源(resource)就是一個網站包含的內部資料,以一個社群網站來說,他的使用者,使用者之間的群組就是資源。
Q: 什麼叫做針對資源而不是網頁服務?
A: 首先要知道HTTP包含很多種「動詞」Verb,就是HTTP這個protocol提供的溝通介面,像是GET, POST, PUT, DELETE等。
接著我們從網址就可以很清楚的看到差異,假設有一個網站提供「搜尋某個使用者資訊」的功能,傳統的網址可能長這樣:
http://www.some_site.com/find_user?id=123
或是
http://www.some_site.com/user/find/123
傳統的方式會將要做的動作利用網址來傳達給server,可是這樣並沒有充分利用到HTTP的各種Verb,各個網站也沒有一個固定的介面,當要在許多網站之間溝通的時候,就會發生很大的麻煩。
然而,RESTful(也就是符合REST的風格) 的網址會長這樣
http://www.some_site.com/user/123 ; 並且搭配HTTP的「GET」
這樣可以解讀為 「GET」a 「user」 which id is 「123」from 「www.some_site.com」
翻譯就是「從www.some_site.com上取得(GET)一個id是123的user」

http://www.some_site.com/user/123就是一個資源(resource),這個網址就代表著id為123的user,至於是要對這個user做什麼樣的動作,就根據HTTP verb來判斷。

為甚麼要強調搭配GET?因為這就是RESTful的特色,根據不同的Verb會有不同的運作方式。同樣一個網址:
http://www.some_site.com/user/123;並搭配HTTP的「PUT」
會變成「PUT」a 「user」 data to 「www.some_site.com」which id is 「123」
也就是「更新(PUT)一個id是123的user資料到www.some_site.com上」
乍看之下,傳統方式與RESTful的網址感覺都很類似,都是利用網址來告訴server要做的動作,唯一的差別在於
「RESTful充分利用了HTTP各種的Verb」
以前我們用SQL的SELECT,  INSERT, UPDATE, DELETE對應到CRUD的find, create, update, destory
現在我們再把這個對應關係拓展到HTTP的GET,POST,PUT,DELETE,就這樣
好處在哪裡?一旦統一了RESTful的形式,假設我有一個已經建立好的使用者資訊群組網站A。今天我要做一個購物網站B,我不需要將A中的使用者
資料全部複製到B,我可以直接從B去抓取A網站中的資源(resource),A網站完全不需要做任何的修改,B網站也不需要特別寫不同的方法,只要讓B
知道有A這個資源可以利用,就可以直接在B中進行
User.find :all
之類的操作,而B完全不需要有User的Model!
總之,RESTful是一種網站的interface制定方式,所以REST是一種Design Pattern而不是開發技術。
當然更長遠的目標就是:一旦多數網站都以RESTful的方式設計, 那要基於這些已存在資料去建立新的網站(類似mashup)就變成非常容易的一件事情。

flyinsky76 發表在 痞客邦 留言(0) 人氣()

1.jpg
依照"rails敏捷開發網站"做練習
結果發現錯誤
原來版本rails 2.0做了很大更動
試了好多次錯誤終於試出來 (很多人說載什麼東西之類的 但雞仔始終還是錯...)

flyinsky76 發表在 痞客邦 留言(0) 人氣()

無設密碼且是預設使用者root: mysqladmin -u root create first( datebase name)
有設密碼且是預設使用者root: mysqladmin -u root -p create first
配置資訊在config/database.yml中

first:
  adapter: mysql   (使用何種資料庫)
  database: first    (資料庫名稱)
  username: root  (使用者名稱)
  password:           (使用者密碼)
  host: localhost    (資料庫在何種機器上,預設為localhost (自己主機) )
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql
  database: first
  username: root
  password:
  host: localhost
production:
  adapter: mysql
  database: first
  username: root
  password:
  host: localhost

flyinsky76 發表在 痞客邦 留言(0) 人氣()

2.jpg
當建立完controller
依照MVC架構
應該讓view來顯示出介面才對
來創建view吧

flyinsky76 發表在 痞客邦 留言(0) 人氣()

1.jpg
step1: 建立Controller ( 使用rails的生成器 generator )
ruby script/generate controller Testing
step2: 執行Controller
http://localhost:3000/greeting

flyinsky76 發表在 痞客邦 留言(0) 人氣()

先建立一個rails專案
step1 安裝: gem install rails --include-dependencies
step2 建立專案: rails first (project name)
step3 啟動伺服器: script/server (windows下 前面加ruby關鍵字) (需在專案資料夾路徑下)

flyinsky76 發表在 痞客邦 留言(0) 人氣()

ruby生成目錄中所擺置的東西:
app: 應用程式元件
components: self-contained應用程式
config: 組態碼

flyinsky76 發表在 痞客邦 留言(0) 人氣()

  • Apr 05 Sun 2009 09:04
  • MVC

MVC1.jpg
MVC為一種軟體架構
直接用圖說明 (畫得很醜 XD)
 
詳細介紹是這樣滴

flyinsky76 發表在 痞客邦 留言(0) 人氣()

Rails 特色:
Metaprogramming: 程式寫程式
Active Record: 找到資料庫 Schema中的欄位,並使用Metaprogramming自動指派domain object (也就是自動命名啦)
Scaffolding: 臨時性Code 幫助迅速建立應用程式

flyinsky76 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。