日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

REST风格及RESTful入门

發(fā)布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 REST风格及RESTful入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

REST風(fēng)格

????????REST(Representational State Transfer)是一種訪問網(wǎng)絡(luò)資源的格式,它是一種軟件架構(gòu)風(fēng)格。REST被稱為風(fēng)格,是一種約定方式,而不是一種規(guī)則,及可以打破,但并不代表其不重要。REST提供了對應(yīng)的架構(gòu)方式,按照這種架構(gòu)設(shè)計項目可以降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性,而且書寫的訪問網(wǎng)絡(luò)資源形式簡單,有利于開發(fā),所以在大部分企業(yè)的開發(fā)中都在使用此風(fēng)格書寫,并慢慢形成了一種潛規(guī)則,So,我們需要了解,并且學(xué)會用這種風(fēng)格書寫程序。

eg:

·傳統(tǒng)風(fēng)格資源描述方式

????????http://localhost/user/getById?id=1

·Rest風(fēng)格資源描述方式

????????http://localhost/user

????????傳統(tǒng)方式一般是一個請求url對應(yīng)一種操作,這樣做不僅麻煩,也不安全,因?yàn)闀绦虻娜俗x取了你的請求url地址,就大概知道該url實(shí)現(xiàn)的是一個什么樣的操作。

再看REST風(fēng)格的描述,會發(fā)現(xiàn)請求地址變的簡單,并且光看請求URL并不是很能猜出來該URL的具體功能。

Rest風(fēng)格的優(yōu)點(diǎn):

①隱藏資源的訪問行為,無法通過地址得知對資源是何種操作

②書寫簡單

REST風(fēng)格描述方式(http://localhost/user)很難判斷出此地址是用來查詢、新增或者還是刪除等操作,所以我們在書寫這種風(fēng)格的網(wǎng)絡(luò)資源時要使用行為動作來進(jìn)行區(qū)分。

eg:

http://localhost/users ????????查詢?nèi)坑脩粜畔?GET(查詢)

http://localhost/users/1 ????????查詢指定用戶信息 GET(查詢)

http://localhost/users ????????添加用戶信息 POST(新增/保存)

http://localhost/users ????????修改用戶信息 PUT(修改/更新)

http://localhost/users/1 ????????刪除用戶信息 DELETE(刪除)

比較常用的就4種,分別是GET , POST , PUT , DELETE

1.發(fā)送GET請求是用來做查詢

2.發(fā)送POST請求是用來做新增

3.發(fā)送PUT請求是用來做修改

4.發(fā)送DELETE請求是用來做刪除

RESTful

根據(jù)REST風(fēng)格對資源進(jìn)行訪問被稱為RESTful。

入門操作:

過程與SpringMvc操作相同SpringMvc入門,不過在Controller中需要添加各種類型響應(yīng)的方法

要注意:

一、在請求響應(yīng)時要解決中文亂碼的問題

二、在pom中要添加jackson依賴

?

?

新增操作

常規(guī)代碼書寫

@RequestMapping("/save") @ResponseBody public String save(@RequestBody User user) { System.out.println("user save..."+user); return "{'module':'user save'}"; }

RESTful書寫

@RequestMapping(value = "/users",method = RequestMethod.POST) @ResponseBody public String save() { System.out.println("user save..."); return "{'module':'user save'}"; }

使用method屬性限定該方法的訪問方式為POST

刪除操作

常規(guī)書寫

@RequestMapping("/delete") @ResponseBody public String delete(Integer id) { System.out.println("user delete..." + id); return "{'module':'user delete'}"; }

RESTful書寫

@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE) @ResponseBody public String delete(@PathVariable Integer id) { System.out.println("user delete..." + id); return "{'module':'user delete'}"; }

使用method屬性限定該方法的訪問方式為DELETE。

其余的更新,查詢方法與新增刪除的書寫類似,都是通過定義method屬性來限定訪問的方法。

但是書寫過多會發(fā)現(xiàn),雖然訪問時的路徑變得簡單了,但是書寫的過程很繁瑣

發(fā)現(xiàn)的問題:

問題1:每個方法的@RequestMapping注解中都定義了訪問路徑/books,重復(fù)性太高。

問題2:每個方法的@RequestMapping注解中都要使用method屬性定義請求方式,重復(fù)性太高。

問題3:每個方法響應(yīng)json都需要加上@ResponseBody注解,重復(fù)性太高。

對于上述的問題,對應(yīng)的解決方案:

問題1:每個方法的@RequestMapping注解中都定義了訪問路徑/books,重復(fù)性太高。

????????????將@RequestMapping提到類上面,用來定義所有方法共同的訪問路徑。

問題2:每個方法的@RequestMapping注解中都要使用method屬性定義請求方式,重復(fù)性太高。

? ? ? ? ? ? ?使用@GetMapping @PostMapping @PutMapping @DeleteMapping代替

問題3:每個方法響應(yīng)json都需要加上@ResponseBody注解,重復(fù)性太高。

?????????????1.將ResponseBody提到類上面,讓所有的方法都有@ResponseBody的功能

?????????????2.使用@RestController注解替換@Controller與@ResponseBody注解,簡化書寫

最終的代碼如圖

心得:REST風(fēng)格書寫過程不難,但是在對于書寫訪問網(wǎng)絡(luò)資源的格式這里,前期最好還是用常規(guī)方法書寫,用REST方法雖然方便,但對于初學(xué)者來說,過度的簡化對于學(xué)者的理解不太友好,在后期對寫過代碼的理解也會有影響,所以等真正熟悉了這里的操作后,再轉(zhuǎn)用REST風(fēng)格來書寫,可以更有效的幫助我們學(xué)習(xí)與開發(fā)。

?

?

總結(jié)

以上是生活随笔為你收集整理的REST风格及RESTful入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。