1. REST介紹
REpresentational State Transfer (REST)?是一種架構(gòu)原則闪朱,其中將?web?服務(wù)視為資源,可以由其?URL?唯一標(biāo)識法梯。
RESTful Web?服務(wù)的關(guān)鍵特點是明確使用?HTTP?方法來表示不同的操作的調(diào)用蜘矢。
REST?的基本設(shè)計原則對典型?CRUD?操作使用?HTTP?協(xié)議方法:
POST -?創(chuàng)建資源
GET -?檢索資源
PUT?–?更新資源
DELETE -?刪除資源
REST?服務(wù)的主要優(yōu)勢在于:
它們是跨平臺?(Java、.net埠忘、PHP?等)高度可重用的脾拆,因為它們都依賴基本?HTTP?協(xié)議。
它們使用基本的?XML莹妒,而不是復(fù)雜的?SOAP XML名船,使用非常方便。
基于?REST?的?web?服務(wù)日益成為后端企業(yè)服務(wù)集成的首選方法旨怠。與基于?SOAP?的?web?服務(wù)相比渠驼,它的編程模型簡單,而本機(jī)?XML(而不是?SOAP?)的使用減少了序列化和反序列化過程的復(fù)雜性鉴腻,并且不再需要其他作用相同的第三方庫迷扇。
2. 編寫目的
編寫本文的目的是為了將系統(tǒng)功能進(jìn)行模塊化、服務(wù)化爽哎,將用戶的操作以服務(wù)的方式提供谋梭。系統(tǒng)與系統(tǒng)之間遵循服務(wù)規(guī)范,將系統(tǒng)與系統(tǒng)之間的交互轉(zhuǎn)為定制化服務(wù)交互倦青,以實現(xiàn)系統(tǒng)與系統(tǒng)之間的集成
3. 編寫原則
可尋址性(Addressability)
REST 中的所有東西都基于資源 的概念瓮床。資源與 OOP 中的對象或其他名詞不同,它是一種抽象,必須可以通過 URI 尋址或訪問隘庄。
接口一致性(Interface uniformity)
與?SOAP?或其他標(biāo)準(zhǔn)不同踢步,REST?要求用來操縱資源的方法或動詞不是任意的。這意味著?RESTful?服務(wù)的開發(fā)人員只能使用?HTTP?支持的方法丑掺,比如GET获印、PUT、POST街州、DELETE等等兼丰。因此不需要使用?WSDL?等服務(wù)描述語言
無狀態(tài)(Statelessness)
為了增強可伸縮性,服務(wù)器端不存儲客戶機(jī)的狀態(tài)信息唆缴。這使服務(wù)器不與特定的客戶機(jī)相綁定鳍征,負(fù)載平衡變得簡單多了。這還讓服務(wù)器更容易監(jiān)視面徽、更可靠
具象(Representational)
客戶機(jī)總是與資源的某種具象交互艳丛,絕不會直接與資源本身交互。同一資源還可以有多個具象趟紊。理論上說氮双,持有資源的具象的任何客戶機(jī)應(yīng)該有操縱底層資源的足夠信息。
連通性(Connectedness)
任何基于?REST?的系統(tǒng)都應(yīng)該預(yù)見到客戶機(jī)需要訪問相關(guān)的資源霎匈,應(yīng)該在返回的資源具象中包含這些資源戴差。例如,可以以超鏈接的形式包含特定?RESTful?服務(wù)的操作序列中的相關(guān)步驟铛嘱,讓客戶機(jī)可以根據(jù)需要訪問它們暖释。
4. 服務(wù)使用說明
1) 當(dāng)前系統(tǒng)已經(jīng)提供的服務(wù)
2)? GET方式調(diào)用服務(wù)
說明:
1.請求方式包括:GET (這里以area服務(wù)為實例,GET對應(yīng)每一個服務(wù)Resource中的@RequestMapping(value = "treeData",method = RequestMethod.GET))
2.請求URL:rest服務(wù)請求地址,對應(yīng)XXXServiceResource.java的mapping配置中的value
@RequestMapping(value = "treeData", method = RequestMethod.GET))
3.其中GET請求只包含了請求方式和請求的URL弄痹,返回的結(jié)果以json格式返回給客戶端
3) POST、DELETE嵌器、UPDATE方式調(diào)用服務(wù)
說明:
1.請求方式選擇POST肛真、DELETE、UPDATE(這里以保存收藏功能為例(PUT請求)爽航,對應(yīng)每一個服Resource中的@RequestMapping(value = "save",method = RequestMethod.PUT))
2.Json參數(shù): 其中POST蚓让、DELETE、UPDATE可能傳遞參數(shù)通過json讥珍,也可能通過路徑直接拼接參數(shù)历极,這邊以傳遞json到服務(wù)端為實例,對應(yīng)服務(wù)端代碼:
public JSONObject save(@RequestBody JSONObject obj,BookmarkTag bookmarkTag) {
3.請求URL:rest服務(wù)請求地址,對應(yīng)XXXServiceResource.java的mapping配置中的value
@RequestMapping(value = " save",method = RequestMethod.PUT))
4.返回的結(jié)果以json格式返回給客戶端
5.? 服務(wù)列表(僅僅列舉實例)
1)添加標(biāo)簽
2)刪除標(biāo)簽
3)更新標(biāo)簽
4)獲取標(biāo)簽列表
歡迎大家一起學(xué)習(xí)研究相關(guān)技術(shù)
愿意了解框架技術(shù)或者源碼的朋友直接求求交流分享技術(shù):2042849237
更多詳細(xì)源碼參考來源:http://minglisoft.cn/technology