REST(一)REST簡述
阿新 • • 發佈:2018-11-30
REST(一)REST簡述和Spring MVC整合
在Http協議發展的過程中,提出了很多的規則,但是這些規則有些繁瑣,於是又提出了一種風格約定,它就是REST風格。實際上嚴格地說它並不是一種協議和標準,而是一種風格。
REST簡述
REST
(Representational State Transfer)可以翻譯為表現層狀態轉換。首先需要又資源才能表現,所以第一個名詞是資源
。有了資源也要根據需要以合適的形式表現,這就是第二個名詞表現層
。最後是資源可以被新增、修改、刪除等,這就是第三個名詞狀態轉換
。這就是REST風格的三個主要的名詞。下面對其做進一步的闡述。
- 資源:它可以是系統許可權使用者,角色和選單等,也可以是一些媒體檔案,如文字圖片歌曲等等,總之就是一個具體存在的物件。可以用一個URI(Uniform Resouce Identifier,統一資源定位符)指向它,每個資源對應一個特定的URI,要獲取這個資源,訪問它的URI即可,而在REST中每一個資源哦都會對應一個獨一無二的URI。在REST中,URI也可以被稱為端點(End Point)。
- 表現層:有了資源還需要確定如何表現這個資源。例如,一個使用者可以使用Json,xml或者其他的形式表現出來,又如可能返回的是一幅圖片。
- 狀態轉換:現實中的資源並不是一成不變的,它是一個變化的過程,一個資源可以經歷建立、訪問、修改和刪除的過程。對應HTTP協議,是一個沒有狀態的協議,這也意味著對於資源的狀態變化就只能在伺服器端儲存和變化,不過HTTP中卻存在多種動作來對應這些變化。
HTTP動作
- GET:訪問伺服器資源(一個和多個資源)。
- POST:提交伺服器資源資訊,用來建立新的資源。
- PUT:修改伺服器已經存在的資源,使用PUT時需要把資源所有屬性一併提交
- PATCH:修改伺服器已經存在的資源,只需要將部分資源屬性提交。
- DELETE:從伺服器將資源刪除。
此外,還有兩個並不常用的動作
- HEAD:獲取資源的元資料(content-type)
- OPTIONS:提供資源可供客戶端修改的屬性資訊。
下面列出幾個REST風格的URI
# 獲取使用者資訊,1是使用者編號 GET /user/1 # 查詢多個使用者資訊 GET /users/{userName}/{note} # 建立使用者 POST /user/{userName}/{sex}/{note} # 修改使用者全部屬性 PUT /user/{id}/{userName}/{sex}/{note} # 修改使用者姓名 PATCH /user/{id}/{userName}
Spring MVC整合REST
Spring MVC 除了@RequestMapping外,還可以使用以下五個註解
- @GetMapping:對應HTTP的GET請求,獲取資源
- @PostMapping:對應HTTP的POST請求,建立資源
- @PutMapping:對應HTTP的PUT請求,提交所有資源屬性修改資源
- @PatchMapping:對應HTTP的PATCH請求,提交資源部分屬性修改資源
- @DeleteMapping:對應HTTP的DELETE請求,刪除資源