Restful是基於網路的軟體系統架構風格。其優先考慮分布性和擴充性,而不是安全、錯誤處理、對象映射。
所以Restful架構特別適用的場合為使用者快速增長的互連網和移動互連網領域,看起來很容易理解,以資源,資源的表示,資源的狀態轉移為核心概念。
不過實際在實現Restful服務的時候,仍然有一些應用陷阱,部分是由於Restful本身不是強制性約束,而只是風格建議,
部分是由於開發人員對Restful的一知半解乃至曲解所導致。
把一個系統的Restful APIs設計簡潔得體,讓使用者舒服,並遵循一致的風格/規範,毫無疑問是好的架構師需要去做的事情。
比如一個網上商城系統的使用者註冊、登陸、更新帳戶資訊等行為,如何用Restful提供API介面,並非CRUD映射那麼簡單。
下面是對Restful服務相關的必讀文章,對Restful幾乎所有問題都有精準的解讀。
1、Fielding博士論文,Restful風格提出者
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
2、RESTful實踐 RESTful HTTP in practice
http://www.infoq.com/articles/designing-restful-http-apps-roth
3、如何版本化REST服務 Versioning REST services
http://www.informit.com/articles/article.aspx?p=1566460
把版本和資源表示格式放在URL中雖然不那麼Restful,但也有好處,簡潔直觀,便於從系統日誌中檢查問題
4、如何處理非CRUD動作,如door/1/lock, user/1/login etc...基本上可以通過為資源添加一個狀態屬性(子資源)來去動詞化
http://stackoverflow.com/questions/16091947/how-to-route-non-crud-actions-in-a-restful-asp-net-web-api
一致的URL風格方便在配置中統一建立URL映射規則,可以避免特殊處理代碼即寫入程式碼,
如果把動詞register/login等放在url中,固然看起來直觀,但需要編寫特定的URL映射,從而引入hard codes。
5、RESTful服務安全方案oauth/oauth2被廣泛使用如Facebook
http://oauth.net/2/
by iefreer