摘要:廢話不多講,下面就說說風(fēng)格到底是個(gè)神馬東東。一個(gè)資源可能會(huì)隨著需求的變化而經(jīng)歷一個(gè)資源創(chuàng)建修改查詢刪除等過程,風(fēng)格正是基于協(xié)議運(yùn)行的,協(xié)議又被稱為無狀態(tài)協(xié)議,所以資源的變化需要在服務(wù)端完成。
現(xiàn)如今微服務(wù)如日中天,那么大家有沒有想過各個(gè)微服務(wù)之間是怎么調(diào)用數(shù)據(jù)亦或是怎么交互的呢?當(dāng)然方式有很多,但今天所說的REST風(fēng)格被業(yè)界推薦為微服務(wù)之間交互的首選方式(小編還是非常喜歡這種方式的)。廢話不多講,下面就說說REST風(fēng)格到底是個(gè)神馬東東。--讀《深入淺出 Sping Boot》有感
REST簡(jiǎn)介REST(Representational State Transfer)又被喚作表現(xiàn)層狀態(tài)轉(zhuǎn)換。它涉及到三個(gè)重要名詞:
資源
所謂資源簡(jiǎn)單講就是服務(wù)所能提供的數(shù)據(jù),可以是實(shí)體數(shù)據(jù)也可是媒體類型,圖片、PDF、文本等
表現(xiàn)層
何為變現(xiàn)層?簡(jiǎn)單說就是將數(shù)據(jù)以某種方式展現(xiàn)給用戶,或者給客戶返回一張圖片等等動(dòng)作稱之為表現(xiàn),通常是已JSON或XML形式展現(xiàn)數(shù)據(jù)
狀態(tài)轉(zhuǎn)換
狀態(tài)轉(zhuǎn)換就是對(duì)數(shù)據(jù)進(jìn)行一系列的操作,因?yàn)橘Y源本身并非一塵不變,隨著需求的變化而變化。一個(gè)資源可能會(huì)隨著需求的變化而經(jīng)歷一個(gè)資源創(chuàng)建、修改、查詢、刪除等過程,REST風(fēng)格正是基于HTTP協(xié)議運(yùn)行的,HTTP協(xié)議又被稱為無狀態(tài)協(xié)議,所以資源的變化需要在服務(wù)端完成。
在做這個(gè)之前有必要清楚Http協(xié)議的7種常用動(dòng)作:GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS
# 以id為編碼 獲取商品信息 GET /goods/1 # 獲取多個(gè)商品信息 GET /goods/{goodName}/{note} # 創(chuàng)建商品信息 POST /goods/{goodName}/{price}/{note} # 修改商品信息 PUT /goods/{goodName}/{price}/{note} # 修改商品部分 PATCH /goods/{goodName}/{note} # 刪除某個(gè)商品信息 DELETE /goods/2REST風(fēng)格端點(diǎn)
# 創(chuàng)建一個(gè)商品實(shí)體類 public class goods{ private Long id; private String goodsName; private Double price; private String note; public Long getId(){ return id; } public void setId(Long id){ this.id = id; } public String getGoodsName(){ return goodsName; } public void setGoodsName(String goodsName){ this.goodsName = goodsName; } public Double getPrice(){ return price; } public void setPrice(Double price){ this.price = price; } public String getNote(){ return note; } public void setNote(String note){ this.note = note; } }
# 控制器 @Controller public class GoodsController{ /** *REST風(fēng)格 獲取商品的GET請(qǐng)求方式 **/ @GetMapping(value="/goods/{id}") @ResponseBody public Goods getGoods(@Pathvariable("id") Long id){ Goods goods = goodsService.getGoods(id); return goods; } /** *REST風(fēng)格 PUT請(qǐng)求修改商品信息 **/ @GetMapping(value="/goods/{id}") @ResponseBody public Goods getGoods(@Pathvariable("id") Long id,@RequestBody Goods goods){ Goods goods = goodsService.getGoods(id); goods.setId(id); goodsService.update(goods); return goods; } /** *REST風(fēng)格 使用HTTP的DELETE請(qǐng)求刪除商品信息 **/ @GetMapping(value="/goods/{id}") @ResponseBody public String getGoods(@Pathvariable("id") Long id){ int status = goodsService.deleteGoods(id); String result = ""; if(status=0){ result = "操作成功"; }else{ result = "操作失敗"; } return result; } }
以上是我對(duì)REST風(fēng)格的簡(jiǎn)單認(rèn)識(shí),希望能給您提供些許幫助!謝謝支持?。?/strong>
2019-03-27 23:30:34 星期三
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73972.html
摘要:接下來繼續(xù)介紹三種架構(gòu)模式,分別是查詢分離模式微服務(wù)模式多級(jí)緩存模式。分布式應(yīng)用程序可以基于實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布訂閱負(fù)載均衡命名服務(wù)分布式協(xié)調(diào)通知集群管理選舉分布式鎖和分布式隊(duì)列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最簡(jiǎn)單的 SpringCloud 教程 | 第九篇: 服務(wù)鏈路追蹤 (Spring Cloud Sleuth) 史上最簡(jiǎn)單的 S...
摘要:它就是史上最簡(jiǎn)單的教程第三篇服務(wù)消費(fèi)者后端掘金上一篇文章,講述了通過去消費(fèi)服務(wù),這篇文章主要講述通過去消費(fèi)服務(wù)。概覽和架構(gòu)設(shè)計(jì)掘金技術(shù)征文后端掘金是基于的一整套實(shí)現(xiàn)微服務(wù)的框架。 Spring Boot 配置文件 – 在坑中實(shí)踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實(shí)踐版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處本文提綱一、自動(dòng)配置二、自定義屬性三、ran...
摘要:通過增刪查改,引起資源狀態(tài)的改變,稱為狀態(tài)轉(zhuǎn)移。用于獲取資源的元信息。方法與方法類似,都可以查詢資源的元信息放在的,但不會(huì)返回資源的表述。表示請(qǐng)求有問題,如參數(shù)錯(cuò)誤等。表示當(dāng)前請(qǐng)求的某前置條件不符合。網(wǎng)關(guān)錯(cuò)誤,從上游服務(wù)器收到無效響應(yīng)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由sammyshen 發(fā)表于云+社區(qū)專欄 最近幾年REST API越來越流行,特別是...
摘要:但是遠(yuǎn)遠(yuǎn)不僅是指的風(fēng)格,它是一種網(wǎng)絡(luò)應(yīng)用的架構(gòu)風(fēng)格。參考用定位資源在架構(gòu)風(fēng)格中,用來指定一個(gè)資源。完整狀態(tài)碼列表如何設(shè)計(jì)在過去不使用架構(gòu)風(fēng)格的時(shí)候,如果我們要設(shè)計(jì)一個(gè)系統(tǒng),會(huì)以操作為出發(fā)點(diǎn),然后圍繞它去建設(shè)其他需要的東西。 引言 作為Web開發(fā)者,你可能或多或少了解一些REST的知識(shí),甚至已經(jīng)非常習(xí)慣于它,以至于在正式地學(xué)習(xí)REST的時(shí)候,你可能心里會(huì)想:本來就是這樣做的啊,不然還能怎...
閱讀 2975·2021-09-23 11:32
閱讀 2938·2021-09-22 15:12
閱讀 1719·2019-08-30 14:07
閱讀 3461·2019-08-29 16:59
閱讀 1651·2019-08-29 11:11
閱讀 2314·2019-08-26 13:50
閱讀 2436·2019-08-26 13:49
閱讀 2630·2019-08-26 11:49