1) 爲什麼REST:
試想MVC模式。
如果您有多個相同內容的視圖,模型 - 視圖分離尤其有意義。
現在通過易於實現的特定於應用程序的協議將REST看作是一種機器友好的視圖。讓您的應用程序對希望將應用程序作爲Web服務集成到自己的應用程序中的其他開發人員也有用。
REST是一種應用程序集成技術。
如果您想爲您的應用程序提供機器和開發人員友好的Web服務API,那麼REST是一個不錯的選擇。
2) REST vs RPC REST應該按照無狀態的方式實現每個定義。 RPC調用是對對象或會話變量的遠程方法調用,這會使RPC API處於有狀態,並且在許多情況下更昂貴。
3) 不同REST風格 與REST的問題是,它並不總是很容易爲對象的所有操作地圖上常見的HTTP方法GET,POST,PUT,DELETE,OPTIONS。
顯然CRUD可以通過將4個CRUD操作分配給GET,POST,PUT,DELETE方法來實現。
但是你也可以在POST方法的HTTP主體中編寫這種操作,這是做REST的簡約GET,POST風格。
問題並非所有的HTTP客戶端都可以發送PUT請求。
由CRUD式的服務倡導的解決方案是通過註釋POST請求有一個特殊的HTTP標頭以模擬PUT請求: X-HTTP-方法 - 替換:PUT
但是,這並不能解決問題,因爲一些外來的防火牆刪除了這個非標準的HTTP頭。
Roy Fielding創造了RESTful API這個術語,他還提到他認爲用GET和POST設計一個完美的RESTful系統是完全可能的。
4) 將REST添加到現有的MVC Web應用程序中需要至少實現一個額外的RESTful控制器,該控制器將HTTP方法轉換爲由請求URI標識的模型對象上的PUT,POST,DELETE動作,實現更加機器友好的視圖(JSON,XML,...)。
此信息應該很有用:http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsers –