隨着移動互聯網的興起,RESTful風格的API設計也隨之流行起來,但咱們說了那麼多RESTful設計,它究竟是什麼?本篇文章帶你們來了解一下它的真實面目。小程序
「資源」是RESTful中最核心的概念之一。在RESTful概念中,互聯網中的每同樣信息均可以定義爲資源,好比文本、圖片、音頻、視頻等。而這些資源又均可以對應一個特定的URI(統一資源定位符),URI爲每個資源的地址或獨一無二的識別符。微信小程序
針對上面的「資源」,咱們要進行相應的呈現,並且能夠採用多種的呈現形式,而這些呈現形式就叫作「表現層」。服務器
就拿文本爲例,咱們能夠呈現爲JSON格式、XML格式、HTML格式,甚至二進制格式等。這就是表現層所作的事情。微信
資源一般放在服務器端,而客戶端對服務器資源的增、刪、改、查等操做,便涉及到資源狀態的轉化。這個過程即是「 狀態轉化」。網絡
咱們以HTTP協議爲例(RESTful不只僅適用HTTP協議,只不過常常以HTTP協議爲陪襯),客戶端可經過一些操做讓服務器端的資源發生變化。app
而這整個過程,即是「表現層狀態轉化」。ide
在HTTP中,提供了四種常見的操做方式:GET、POST、PUT、DELETE。post
這四種操做方式分別對應四種基本操做:GET用來獲取資源,POST用來新建資源(也能夠用於更新資源),PUT用來更新資源,DELETE用來刪除資源。ui
這是由於RESTful風格的設計擁有如下特色:結構清晰、符合標準、易於理解、擴展方便。spa
試想一下,若是採用傳統的JSP模式,頁面內容和代碼混合在一塊兒,而此時項目功能需新增移動端、微信小程序等其餘客戶端,是否須要從新定義接口?
而採用RESTful的定義,不只結構清晰,更重要的是易於擴展、適用性更普遍。
以用戶(User)的增刪改查爲例,咱們能夠設計出一下接口形式:每列分別對應,(請求類型:請求地址:功能描述)
看起來是否是簡潔、清晰、方便不少?
若是再和SpringBoot結合起來,那就更加方便。下面展現部分經過SpringBoot來實現Controller層的代碼。
public class RestfulController {
private UserService userService;
/** * 建立用戶操做 */ public User addUser(User user) { return userService.addUser(user); }
/** * 獲取所需用戶操做 */ public List<User> listUser() { return userService.findAll(); }
/** * 更新用戶 */ public User update(User user) { return userService.update(user); }
/** * 修改用戶名 */ public User updateUsername(User user) { return userService.updateUsername(user); }
/** * 獲取用戶 */ public User get( Long id) { return userService.findById(id); }
/** * 刪除用戶 */ public void delete( Long id) { userService.delete(id); }}