您好,登錄后才能下訂單哦!
目 錄
REpresentational State Transfer (REST) 是一種架構(gòu)原則,其中將 web 服務(wù)視為資源,可以由其 URL 唯一標(biāo)識(shí)。RESTful Web 服務(wù)的關(guān)鍵特點(diǎn)是明確使用 HTTP 方法來表示不同的操作的調(diào)用。
REST 的基本設(shè)計(jì)原則對(duì)典型 CRUD 操作使用 HTTP 協(xié)議方法:
POST - 創(chuàng)建資源
GET - 檢索資源
PUT – 更新資源
DELETE - 刪除資源
REST 服務(wù)的主要優(yōu)勢(shì)在于:
它們是跨平臺(tái) (Java、.net、PHP 等)高度可重用的,因?yàn)樗鼈兌家蕾嚮?HTTP 協(xié)議。
它們使用基本的 XML,而不是復(fù)雜的 SOAP XML,使用非常方便。
基于 REST 的 web 服務(wù)日益成為后端企業(yè)服務(wù)集成的首選方法。與基于 SOAP 的 web 服務(wù)相比,它的編程模型簡(jiǎn)單,而本機(jī) XML(而不是 SOAP )的使用減少了序列化和反序列化過程的復(fù)雜性,并且不再需要其他作用相同的第三方庫(kù)。
編寫本文的目的是為了將系統(tǒng)功能進(jìn)行模塊化、服務(wù)化,將用戶的操作以服務(wù)的方式提供。系統(tǒng)與系統(tǒng)之間遵循服務(wù)規(guī)范,將系統(tǒng)與系統(tǒng)之間的交互轉(zhuǎn)為定制化服務(wù)交互,以實(shí)現(xiàn)系統(tǒng)與系統(tǒng)之間的集成。
可尋址性(Addressability)REST 中的所有東西都基于資源 的概念。資源與 OOP 中的對(duì)象或其他名詞不同,它是一種抽象,必須可以通過 URI 尋址或訪問。
接口一致性(Interface uniformity)與 SOAP 或其他標(biāo)準(zhǔn)不同,REST 要求用來操縱資源的方法或動(dòng)詞不是任意的。這意味著 RESTful 服務(wù)的開發(fā)人員只能使用 HTTP 支持的方法,比如 GET、PUT、POST、DELETE 等等。因此不需要使用 WSDL 等服務(wù)描述語言。
無狀態(tài)(Statelessness)為了增強(qiáng)可伸縮性,服務(wù)器端不存儲(chǔ)客戶機(jī)的狀態(tài)信息。這使服務(wù)器不與特定的客戶機(jī)相綁定,負(fù)載平衡變得簡(jiǎn)單多了。這還讓服務(wù)器更容易監(jiān)視、更可靠。
具象(Representational)客戶機(jī)總是與資源的某種具象交互,絕不會(huì)直接與資源本身交互。同一資源還可以有多個(gè)具象。理論上說,持有資源的具象的任何客戶機(jī)應(yīng)該有操縱底層資源的足夠信息。
連通性(Connectedness)任何基于 REST 的系統(tǒng)都應(yīng)該預(yù)見到客戶機(jī)需要訪問相關(guān)的資源,應(yīng)該在返回的資源具象中包含這些資源。例如,可以以超鏈接的形式包含特定 RESTful 服務(wù)的操作序列中的相關(guān)步驟,讓客戶機(jī)可以根據(jù)需要訪問它們。基于 REST 的 Web 服務(wù)日益成為后端企業(yè)服務(wù)集成的
序號(hào) |
變更人員 |
變更時(shí)間 |
變更內(nèi)容 |
1 |
Jeesz |
2014-10-02 |
我的收藏服務(wù)3.1、3.2、4.3、5.4(僅僅以我的收藏部分服務(wù)為實(shí)例),用戶根據(jù)自己的業(yè)務(wù)編寫相關(guān)的服務(wù)文檔即可 |
|
說明:
1. 請(qǐng)求方式包括:GET (這里以area服務(wù)為實(shí)例,GET對(duì)應(yīng)每一個(gè)服務(wù)Resource中的@RequestMapping(value = "treeData", method = RequestMethod.GET))
2. 請(qǐng)求URL:rest服務(wù)請(qǐng)求地址,對(duì)應(yīng)XXXServiceResource.java的mapping配置中的value
@RequestMapping(value = "treeData", method = RequestMethod.GET))
3. 其中GET請(qǐng)求只包含了請(qǐng)求方式和請(qǐng)求的URL,返回的結(jié)果以json格式返回給客戶端
說明:
1. 請(qǐng)求方式選擇POST、DELETE、UPDATE(這里以保存收藏功能為例(PUT請(qǐng)求),對(duì)應(yīng)每一個(gè)服Resource中的@RequestMapping(value = "save", method = RequestMethod.PUT))
2. Json參數(shù): 其中POST、DELETE、UPDATE可能傳遞參數(shù)通過json,也可能通過路徑直接拼接參數(shù),這邊以傳遞json到服務(wù)端為實(shí)例,對(duì)應(yīng)服務(wù)端代碼:
public JSONObject save(@RequestBody JSONObject obj, BookmarkTag bookmarkTag) {
3. 請(qǐng)求URL:rest服務(wù)請(qǐng)求地址,對(duì)應(yīng)XXXServiceResource.java的mapping配置中的value
@RequestMapping(value = " save", method = RequestMethod.PUT))
4. 返回的結(jié)果以json格式返回給客戶端
3、 服務(wù)列表(這邊以我的收藏服務(wù)為例)
請(qǐng)求方式 |
PUT |
服務(wù)URL |
http://localhost:8080/jeesz-service-web/rest/bookmark/save |
路徑參數(shù)?*描述 |
無 |
參數(shù)類型(Type) |
application/json |
參數(shù)描述 |
{“name”:”jeesz”} 備注: name:標(biāo)簽名稱 |
返回值類型(Type) |
application/json |
描述 |
添加成功: {result:”添加成功”, ”name”:”jeesz”,” bookmarkTagId”:”123456789”} 提示:返回結(jié)果由用戶根據(jù)自己的業(yè)務(wù)去擴(kuò)充 |
3.2、 刪除分類標(biāo)簽
請(qǐng)求方式 |
DELETE |
服務(wù)URL |
/bookmark/delete? bookmarkTagId =xxxx |
路徑參數(shù)?*描述 |
bookmarkTagId:分類標(biāo)簽id |
參數(shù)類型(Type) |
String |
返回值類型(Type) |
application/json |
描述 |
添加成功:{“result”:”刪除成功”} 提示:返回結(jié)果由用戶根據(jù)自己的業(yè)務(wù)去擴(kuò)充 |
請(qǐng)求方式 |
POST |
服務(wù)URL |
/bookmark/update |
路徑參數(shù)?*描述 |
無 |
參數(shù)類型(Type) |
application/json |
參數(shù)描述 |
{“id”:”標(biāo)簽id”,“name”:”標(biāo)簽name”} 備注: id:標(biāo)簽id name:標(biāo)簽名稱 |
返回值類型(Type) |
application/json |
描述 |
添加成功:{“result”:”更新成功”} 提示:返回結(jié)果由用戶根據(jù)自己的業(yè)務(wù)去擴(kuò)充 |
請(qǐng)求方式 |
GET |
服務(wù)URL |
/bookmark/list?pageNo=1&pageSize=3 |
路徑參數(shù)?*描述 |
pageNo:當(dāng)前頁(yè) pageSize:每頁(yè)顯示多少條 |
參數(shù)類型(Type) |
無 |
參數(shù)描述 |
通過request獲取參數(shù)(根據(jù)自己的業(yè)務(wù),可以通過其他方式獲取,如路徑參數(shù)?*、路徑拼接參數(shù)等) |
返回值類型(Type) |
application/json |
描述 |
{"pageNo":1,"pageSize":1,"count":42, "list":[{"id":"de0163b614b34c0ba99590e8e63b9e3e", "isNewRecord":false,"createDate":"2016-02-28 21:40:36","updateDate":"2016-02-28 21:40:36","bookmarktagname":"jeesz"}] |
想了解更多詳細(xì)請(qǐng)點(diǎn)擊源碼地址獲取:mingli
有興趣的朋友們可以前往球球哦~一起分享學(xué)習(xí)技術(shù):2042849237
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。