何謂RESTful API? | 理解restful
最近經常跟朋友討論到什麼是RESTfulAPI,從不同人的身上得到了不同的解釋。有些人說,使用了WebAPI就是RESTfulAPI了也有些人說,RESTfulAPI就是就是簡單的CRUD,URL不重要再細一點會有人討論Session是否可以存在、利用回傳的JSON資料定義狀態,亦或是使用HTTP StatusCode?針對這些疑問,我找了一些資料分享出來,一起來討論這些問題,到底哪些才真正符合RESTfulAPI的風格。 REST架構風格描述了六個約束。這些適用於架構的約束最初由RoyFielding在他的博士論文中傳達(參見http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_a...
最近經常跟朋友討論到什麼是RESTful API,從不同人的身上得到了不同的解釋。
有些人說,使用了Web API就是RESTful API了
也有些人說,RESTful API就是就是簡單的CRUD,URL不重要
再細一點會有人討論Session是否可以存在、利用回傳的JSON資料定義狀態,亦或是使用HTTP Status Code?
針對這些疑問,我找了一些資料分享出來,一起來討論這些問題,到底哪些才真正符合RESTful API的風格。
REST架構風格描述了六個約束。這些適用於架構的約束最初由Roy Fielding在他的博士論文中傳達(參見http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm),並定義了RESTful-樣式。[1]
六個約束是:
統一的界面[2]統一的接口約束定義了客戶端和服務器之間的接口。它簡化和分離了架構,使每個部分獨立演變。統一接口的四個指導原則是:
資源型在使用URI作為資源標識符的請求中標識各個資源。資源本身在概念上與返回給客戶端的表示分離。例如,服務器不會發送它的數據庫,而是發送一些HTML,XML或JSON來表示一些數據庫記錄,例如以芬蘭語表示並以UTF-8編碼,具體取決於請求和服務器實現的細節。
通過表示操縱資源當客戶端持有資源的表示形式(包括附加的任何元數據)時,它擁有足夠的信息來修改或刪除服務器上的資源,前提是它有權這樣做。
自描述性消息每條消息都包含足夠的信息來描述如何處理消息。例如,要調用哪個解析器可以通過Internet媒體類型(以前稱為MIME類型)指定。響應還明確指出了它們的緩存能力。
...