什麼是rest?restful?
百度百科解釋:
rest:REST即表述性狀態傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟體架構風格。它是一種針對網路應用的設計和開發方式,可以降低開發的複雜性,提高系統的可伸縮性。
restful:一種軟體架構風格、設計風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。
百度百科的解釋有點專業化,但我們可以從另外一個角度,以舉例的方式來闡述:
通常的web專案的CRUD發出的url一般為
URL | 請求方式 | 操作 |
http://localhost:8080/myweb/queryById?id=1 或 http://localhost:8080/myweb/query?id=1 |
GET | 根據id查詢資料 |
http://localhost:8080/myweb/save 或 http://localhost:8080/myweb/add |
POST | 新增資料 |
http://localhost:8080/myweb/modify 或 http://localhost:8080/myweb/update |
POST | 修改資料 |
http://localhost:8080/myweb/removeById?id=1 |
GET/POST | 根據id刪除資料 |
一看之下是不是很不爽,同樣的操作對應這各種不同的url,而且用到的Http 的請求方式要麼是GET 要麼是POST,然後實際上Http 的請求方式有八種!
正如此,restful強調的是,一種資源(操作)在網路上對應的有且僅有一個url,而用Http 自身的請求方式來闡述要進行的操作。
URL | 請求方式 | 操作 |
http://localhost:8080/myweb/query/1 | GET | 根據id查詢資料 |
http://localhost:8080/myweb/add | POST | 新增資料 |
http://localhost:8080/myweb/modify | PUT | 修改資料 |
http://localhost:8080/myweb/remove/1 | DELETE | 根據id刪除資料 |
兩個表格對比之下就簡單明瞭,restful 風格的url 中是不帶“動詞”的,用請求的方式來描述“動詞”,這樣的話GET 請求就是查詢,POST 請求就是新增,PUT 請求就是修改,DELETE 請求就是刪除。
如果按照以前的話,一個查詢就可以有多種url,命名不規範,不能很好的統一,這就是為什麼有restful 的原因。