restful风格_什么是RESTful风格的API设计?
隨著移動(dòng)互聯(lián)網(wǎng)的興起,RESTful風(fēng)格的API設(shè)計(jì)也隨之流行起來(lái),但我們說(shuō)了那么多RESTful設(shè)計(jì),它到底是什么?本篇文章帶大家來(lái)了解一下它的真實(shí)面目。
RESTful概念
首先,我們需要明確的是RESTful,它是一個(gè)理念,是一個(gè)設(shè)計(jì)規(guī)范,而并不是什么協(xié)議等。
REST,全稱Representational State Transfer,直接翻譯就是:表現(xiàn)層狀態(tài)轉(zhuǎn)化。而該翻譯之所以晦澀是因?yàn)槿鄙倭酥髡Z(yǔ),準(zhǔn)確來(lái)說(shuō)應(yīng)該是“Resource Representational State Transfer”。
通俗來(lái)講,就是“資源在網(wǎng)絡(luò)中以某種表現(xiàn)形式進(jìn)行狀態(tài)轉(zhuǎn)化”。
REST概念是Roy Thomas Fielding在他2000年的博士論文中提出的,他是HTTP協(xié)議(1.0版和1.1版)的主要設(shè)計(jì)者。
有了對(duì)RESTful基礎(chǔ)概念的了解,我們分別來(lái)看看其相關(guān)概念的解釋。
資源
“資源”是RESTful中最核心的概念之一。在RESTful概念中,互聯(lián)網(wǎng)中的每一樣信息都可以定義為資源,比如文本、圖片、音頻、視頻等。而這些資源又都可以對(duì)應(yīng)一個(gè)特定的URI(統(tǒng)一資源定位符),URI為每一個(gè)資源的地址或獨(dú)一無(wú)二的識(shí)別符。
表現(xiàn)層
針對(duì)上面的“資源”,我們要進(jìn)行相應(yīng)的呈現(xiàn),而且可以采用多種的呈現(xiàn)形式,而這些呈現(xiàn)形式就叫做“表現(xiàn)層”。
就拿文本為例,我們可以呈現(xiàn)為JSON格式、XML格式、HTML格式,甚至二進(jìn)制格式等。這就是表現(xiàn)層所做的事情。
狀態(tài)轉(zhuǎn)化
資源通常放在服務(wù)器端,而客戶端對(duì)服務(wù)器資源的增、刪、改、查等操作,便涉及到資源狀態(tài)的轉(zhuǎn)化。這個(gè)過(guò)程便是“ 狀態(tài)轉(zhuǎn)化”。
我們以HTTP協(xié)議為例(RESTful不僅僅適用HTTP協(xié)議,只不過(guò)經(jīng)常以HTTP協(xié)議為襯托),客戶端可通過(guò)一些操作讓服務(wù)器端的資源發(fā)生變化。
而這整個(gè)過(guò)程,便是“表現(xiàn)層狀態(tài)轉(zhuǎn)化”。
在HTTP中,提供了四種常見(jiàn)的操作方式:GET、POST、PUT、DELETE。
這四種操作方式分別對(duì)應(yīng)四種基本操作:GET用來(lái)獲取資源,POST用來(lái)新建資源(也可以用于更新資源),PUT用來(lái)更新資源,DELETE用來(lái)刪除資源。
為什么要使用RESTful風(fēng)格呢
這是因?yàn)镽ESTful風(fēng)格的設(shè)計(jì)擁有以下特點(diǎn):結(jié)構(gòu)清晰、符合標(biāo)準(zhǔn)、易于理解、擴(kuò)展方便。
試想一下,如果采用傳統(tǒng)的JSP模式,頁(yè)面內(nèi)容和代碼混合在一起,而此時(shí)項(xiàng)目功能需新增移動(dòng)端、微信小程序等其他客戶端,是否需要重新定義接口?
而采用RESTful的定義,不僅結(jié)構(gòu)清晰,更重要的是易于擴(kuò)展、適用性更廣泛。
RESTful風(fēng)格示例
以用戶(User)的增刪改查為例,我們可以設(shè)計(jì)出一下接口形式:每列分別對(duì)應(yīng),(請(qǐng)求類型:請(qǐng)求地址:功能描述)
- get : /user/list :獲取所有用戶信息
- post:/user:創(chuàng)建用戶信息
- put:/user:更新用戶信息
- get:/user/1:獲取資源標(biāo)識(shí)(id)為1的用戶信息
- delete:/user/1:刪除資源標(biāo)識(shí)(id)為1的用戶信息
看起來(lái)是不是簡(jiǎn)潔、清晰、方便很多?
如果再和SpringBoot結(jié)合起來(lái),那就更加方便。下面展示部分通過(guò)SpringBoot來(lái)實(shí)現(xiàn)Controller層的代碼。
@RestController@RequestMapping("/user")public class RestfulController { @Resource private UserService userService; /** * 創(chuàng)建用戶操作 */ @PostMapping public User addUser(User user) { return userService.addUser(user); } /** * 獲取所需用戶操作 */ @GetMapping("/list") public List listUser() { return userService.findAll(); } /** * 更新用戶 */ @PutMapping public User update(User user) { return userService.update(user); } /** * 修改用戶名 */ @PatchMapping public User updateUsername(User user) { return userService.updateUsername(user); } /** * 獲取用戶 */ @GetMapping("{id}") public User get(@PathVariable("id") Long id) { return userService.findById(id); } /** * 刪除用戶 */ @DeleteMapping("{id}") public void delete(@PathVariable("id") Long id) { userService.delete(id); }}精品SpringBoot 2.x視頻教程
https://edu.csdn.net/course/detail/20369,精品Spring Boot 2.x視頻教程,打造一套最全的Spring Boot 2.x視頻教程。
本文首發(fā)來(lái)自微信公眾號(hào):程序新視界。一個(gè)軟實(shí)力、硬技術(shù)同步學(xué)習(xí)的平臺(tái)。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的restful风格_什么是RESTful风格的API设计?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 荔枝是什么时候引入中国的?
- 下一篇: 6214开头的是什么银行卡