技術交流的時候遇到了這樣的一個問題,被問及開發中用到的是不是Restful API,我說的是,我們現在用到的不屬於完全是Restful API。因為我瞭解到的Restful API,是 通過具體的URI定位符,找到對應的資源,然後以固定的格式返回數據,這樣的才是Restful API。然而在我模糊的 ...
技術交流的時候遇到了這樣的一個問題,被問及開發中用到的是不是Restful API,我說的是,我們現在用到的不屬於完全是Restful API。因為我瞭解到的Restful API,是 通過具體的URI定位符,找到對應的資源,然後以固定的格式返回數據,這樣的才是Restful API。然而在我模糊的表達中,對方聽出來的是,我現在開發的API依然屬於Restful API。那麼什麼才是真正的Restful API呢,今天我想好好總結一下。(之前學習東西總是,用到了就去搜索,然後很少總結,類似這種不影響我開發的概念性東西,只是大致搜索後,有了瞭解,不求甚解的。現在看來還是有必要弄的更清楚的,因為在討論的時候,容易出現偏差,描述不清楚,對於學習其他知識的時候也是不利的。)
此處說明一下,我看到的是如何使用Retrofit請求非Restful API,這個讓我理解了什麼不是RESTful API,結果是不對的。不過不要緊,這篇博客的重點不是這個。
什麼是REST?
可以總結為一句話:REST是所有Web應用都應該遵守的架構設計指導原則。
Representational State Transfer,翻譯是”表現層狀態轉化”。
面向資源是REST最明顯的特征,對於同一個資源的一組不同的操作。資源是伺服器上一個可命名的抽象概念,資源是以名詞為核心來組織的,首先關註的是名詞。REST要求,必須通過統一的介面來對資源執行各種操作。對於每個資源只能執行一組有限的操作。(7個HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS)
什麼是RESTful API?
符合REST架構設計的API。
總結
符合REST設計標準的API,即RESTful API。REST架構設計,遵循的各項標準和準則,就是HTTP協議的表現,換句話說,HTTP協議就是屬於REST架構的設計模式。比如,無狀態,請求-響應。。。
參考:
理解本身的REST架構風格
http://www.infoq.com/cn/articles/understanding-restful-style/
理解RESTful架構
http://www.ruanyifeng.com/blog/2011/09/restful.html
Restful API設計指南
http://www.ruanyifeng.com/blog/2014/05/restful_api.html