你需要避免設置一個Restful接口來確保你沒有把它變成一個RPC?Restful網絡服務
回答
務必:
- 設計自己的應用程序hypertext-driven(超媒體作爲應用狀態的引擎 - HATEOAS)。
- 花大部分時間和精力來識別資源並製作媒體類型來表示它們。
- 將整個URI視爲您的資源標識符,並假定它將來會更改。
- 提供所有選項以繼續作爲您表示中的鏈接進一步貫穿您的應用程序。
- 將您的應用程序視爲將由客戶「爬行」或「瀏覽」的網站。
- 嘗試爲您的API編寫客戶端並查找耦合發生的位置。
不要:
- 發佈URI模板API文檔。例如,如果您必須具有查詢參數的模板,請確保它們是您的媒體類型定義的一部分。
- 將您的應用程序看作是由四個動詞執行的URI集合。
- 向客戶端提供諸如「application/xml」或「application/json」等MIME類型。
要使用類比,您的API應該更像您的客戶端的GPS,而不像地圖。您只會向客戶提供附近街道的名稱。但從那時起,他們只能做你的應用程序所說的任何事情。
這種風格的目的是儘量減少應用程序和客戶端之間的耦合。所有的耦合應該發生在你的媒體類型定義中。這簡化了API的發展,併爲版本化提供了一個很好的機制。這也使得關於分頁消失等問題成爲問題。
大多數「RESTful」API不遵循這種模式。對於那個,請參閱Sun Cloud API及其backstory。
一種廣泛的問題,但我會試一試。首先,只使用HTTP動詞的意圖。不要通過基本上覆蓋POST的url參數POST,並將其變爲GET或DELETE。這就是SOAP的工作原理(一切都是POST)。
這只是正確的HTTP使用 - doesn與REST無關。 – aehlke 2009-08-03 14:37:16
儘可能利用底層協議。而不是在有效載荷中有動詞嘗試使用(例如)HTTP GET,POST,PUT,DELETE方法。你的URI應該描述一個資源,但不應該用它來做什麼。
一些你想避免的事情是:
- 忽略緩存
- 隧道一切通過GET(或可替代POST)
- 忽略MIME類型
有一個很好的文章這裏談到一些REST反模式:
本文將詳細介紹一些設計決策,從靜止區分RPC:
http://www.pluralsight.com/community/blogs/tewald/archive/2007/04/28/47067.aspx
@美國洛特:感謝,我真的以爲我已經張貼作爲答案不是註釋。我失去了我的彈珠。
- 1. RESTful購物車網絡服務
- 2. iOS和RESTful網絡服務加密
- 3. RestFul網絡服務和數據庫事務
- 4. 網絡服務
- 5. windows服務/網絡服務
- 6. 無法將隨機文件上傳到RESTful網絡服務
- 7. 單元測試ASP.NET MVC 3 RESTful服務沒有一個網絡服務器
- 8. RDBMS網絡服務
- 9. .net網絡服務
- 10. Android網絡服務
- 11. PHP:FedEx網絡服務
- 12. 網絡服務Java
- 13. 網絡內服務
- 14. C++網絡服務
- 15. Python網絡服務
- 16. 通過網絡訪問網絡服務
- 17. 網絡服務器虛擬網絡
- 18. 如何初始化網絡服務的網絡服務接收
- 19. 無法通過網絡服務器使用網絡服務
- 20. 保護網站與我們的RESTful網絡服務之間的溝通
- 21. NowJs服務器到網絡服務器
- 22. 流式數據服務(網絡服務)
- 23. 從網絡服務POST到服務器
- 24. RESTful Web服務
- 25. RESTful WCF服務
- 26. 在RESTful服務
- 27. 與RESTful服務
- 28. RESTful Dictionary服務?
- 29. Restful API服務
- 30. RESTful服務和
傑夫,不要用四個空格開始你的句子 - 這會告訴「降價」把它當作一個代碼塊(沒有自動換行),並且很難閱讀 - 除了實際的代碼塊,課程! :-) – 2009-07-29 20:39:46
http://www.pluralsight.com/community/blogs/tewald/archive/2007/04/28/47067.aspx – skaffman 2009-07-29 20:42:22
@SLott ... oops .. done – skaffman 2009-07-29 21:01:28