什麼是rest?什麼是Restful?他們之間關係
REST服務與Restful風格
一、REST來源
REST:是一組架構約束條件和原則,REST是Roy Thomas Fielding在他2000年的博士論文中提出的。 圖 1 Roy Thomas Fielding是HTTP協議(1.0版和1.1版)的主要設計者、Apache伺服器作者之一、Apache基金會第一任主席
二、什麼是REST
REST(Representational State Transfer):表現層狀態轉移,一種軟體架構風格,不是標準。既然不是標準,我可以遵守,也可以不遵守!!! 什麼是表現層狀態轉移:
Representational (表現層) State Transfer(狀態轉移):通過HTTP動詞實現。
總結:URL定位資源,HTTP動詞(GET,POST,PUT,DELETE)描述操作。
三、什麼是RESTful
基於REST構建的API就是Restful風格。
四、為什麼使用RESTful
1.JSP技術可以讓我們在頁面中嵌入Java程式碼,但是這樣的技術實際上限制了我們的開發效率,因為需要我們Java工程師將html轉換為jsp頁面,並寫一些指令碼程式碼,或者前端程式碼。這樣會嚴重限制我們的開發效率,也不能讓我們的java工程師專注於業務功能的開發,所以目前越來越多的網際網路公司開始實行前後端分離。 2.近年隨著移動網際網路的發展,各種型別的Client層出不窮,RESTful可以通過一套統一的介面為Web,iOS和Android提供服務。另外對於廣大平臺來說,比如微博開放平臺,微信開放平臺等,它們不需要有顯式的前端,只需要一套提供服務的介面,RESTful無疑是最好的選擇。RESTful架構如下:
五、如何設計Restful風格的API
1.路徑設計
—>在RESTful架構中,每個網址代表一種資源(resource),所以網址中不能有動詞,只能有名詞,而且所用的名詞往往與資料庫的表名對應,一般來說,資料庫中的表都是同種記錄的”集合”(collection),所以API中的名詞也應該使用複數。 —>舉例來說,有一個API提供動物園(zoo)的資訊,還包括各種動物和僱員的資訊,則它的路徑應該設計成下面這樣。
2.HTTP動詞設計
對於資源的具體操作型別,由HTTP動詞表示,常用的HTTP動詞如下:
請求方式 | 含義 |
---|---|
GET | 獲取資源(一項或多項) |
POST | 新建資源 |
PUT | 更新資源(客戶端提供改變後的完整資源) |
DELETE | 刪除資源 |
如何通過路徑和http動詞獲悉要呼叫的功能:
請求方式 | 含義 |
---|---|
GET /zoos | 列出所有動物園 |
POST /zoos | 新建一個動物園 |
GET /zoos/ID | 獲取某個指定動物園的資訊 |
PUT /zoos/ID | 更新某個指定動物園的資訊(提供該動物園的全部資訊) |
DELETE /zoos/ID | 刪除某個動物園 |
GET /zoos/ID/animals | 列出某個指定動物園的所有動物 |
DELETE /zoos/ID/animals/ID | 刪除某個指定動物園的指定動物 |