1. 程式人生 > >REST(一)REST簡述

REST(一)REST簡述

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請求,刪除資源

github原始碼