不同的人似乎對REST有不同的定義,有些定義是非常嚴格的,而有些則是比較自由的。我傾向於認為REST架構存在於一個連續的范圍裡,
如圖所示:
我們可以認為REST背後隱含的基本理念如下:
· 越簡單越好
· Web一直是非常成功的。
· Web是很簡單的。
· Web設計要遵循一些指導性原則,而這些原則在過去很長一段時間內都是可靠的。
· Web 服務的設計要以 Web的方式。盡管不同的人對 REST有不同的定義,但可以肯定的是存在一些特征來影響一個服務是否是RESTful的,或者它能不能被認為是RESTful, 或者它能否落在上面這個連續范圍內的某個位置。這裡列出一些(並不是全部)特征:
· 對HTTP 方法(GET,PUT,POST,DELETE是主要的HTTP方法)的合理使用——HI-REST端傾向於對具體方法用於具體的情景進行嚴格的規定。
例如一個HI-REST的實現中使用GET方法獲取,DELETE方法用來刪除,PUT方法用來插入或者更新,而POST方法則用來附加。而LO-REST的解決方案則可能使用POST方法做插入,更新,刪除和附加操作。
· 對數據表現形式的選擇——HI-REST解決方案傾向於選擇標准的數據表現形式,而一些LO-REST解決方案則認為POX也是一個不錯的選擇。
· 對良好構造的URI的使用——HI-REST解決方案傾向於使用描述性的URI而一般情況下不使用查詢字符串,而我們在一些LO-REST解決方案中可以看到對查詢字符串的使用。
· 其他:有效負荷中包含指向相關信息的鏈接,使用合適的HTTP 響應代碼。我沒有在什麼是REST的基礎上給出一個嚴格的定義,原因並不是我覺得這不重要。原因是,從WCF的角度,一個專門的定義無關緊要。WCF支持范圍兩端的REST架構(HI-REST和LO-REST)。
事實上,在下一篇文章中,我將建立一個LO-REST的實現,同時在之後的文章中,我將演示HI-REST端的實現。如果上面這些對你來說都沒有什麼意義,也沒有關系,下面的文章將提供具體的實例。