REST 介紹java
REpresentational State Transfer (REST) 是一種架構原則,其中將 web 服務視爲資源,能夠由其 URL 惟一標識。RESTful Web 服務的關鍵特色是明確使用 HTTP 方法來表示不一樣的操做的調用。web
REST 的基本設計原則對典型 CRUD 操做使用 HTTP 協議方法:編程
POST - 建立資源json
GET - 檢索資源後端
PUT – 更新資源服務器
DELETE - 刪除資源架構
REST 服務的主要優點在於:app
它們是跨平臺 (Java、.net、PHP 等)高度可重用的,由於它們都依賴基本 HTTP 協議。less
它們使用基本的 XML,而不是複雜的 SOAP XML,使用很是方便。模塊化
基於 REST 的 web 服務日益成爲後端企業服務集成的首選方法。與基於 SOAP 的web 服務相比,它的編程模型簡單,而本機 XML(而不是 SOAP )的使用減小了序列化和反序列化過程的複雜性,而且再也不須要其餘做用相同的第三方庫。
1.二、 編寫目的
編寫本文的目的是爲了將系統功能進行模塊化、服務化,將用戶的操做以服務的方式提供。系統與系統之間遵循服務規範,將系統與系統之間的交互轉爲定製化服務交互,以實現系統與系統之間的集成。
1.三、 編寫原則
可尋址性(Addressability)REST 中的全部東西都基於資源 的概念。資源與 OOP 中的對象或其餘名詞不一樣,它是一種抽象,必須能夠經過 URI 尋址或訪問。接口一致性(Interface uniformity)與 SOAP 或其餘標準不一樣,REST 要求用來操縱資源的
方法或動詞不是任意的。這意味着 RESTful 服務的開發人員只能使用 HTTP 支持的方法,好比GET、PUT、POST、DELETE 等等。所以不須要使用 WSDL 等服務描述語言。無狀態(Statelessness)爲了加強可伸縮性,服務器端不存儲客戶機的狀態信息。這使服務器不與特定的客戶機相綁定,負載平衡變得簡單多了。這還讓服務器更容易監視、更可靠。
具象(Representational)客戶機老是與資源的某種具象交互,毫不會直接與資源自己交互。
同一資源還能夠有多個具象。理論上說,持有資源的具象的任何客戶機應該有操縱底層資源的足夠信息。
連通性(Connectedness)任何基於 REST 的系統都應該預見到客戶機須要訪問相關的資源,應該在返回的資源具象中包含這些資源。例如,能夠以超連接的形式包含特定 RESTful 服務的操做序列中的相關步驟,讓客戶機能夠根據須要訪問它們。
1.四、 變動歷史
二、 服務使用說明
2.一、 當前系統已經提供的服務
2.二、 GET 方式調用服務
說明:
1. 請求方式包括:GET (這裏以 area 服務爲實例,GET 對應每個服務 Resource 中的
@RequestMapping(value = "treeData", method = RequestMethod.GET))
2. 請求 URL:rest 服務請求地址,對應 XXXServiceResource.java 的 mapping 配置中的 value
@RequestMapping(value = "treeData", method = RequestMethod.GET))
3. 其中 GET 請求只包含了請求方式和請求的 URL,返回的結果以 json 格式返回給客戶端
2.三、 POST、DELETE、UPDATE 方式調用服務
說明:
1. 請求方式選擇 POST、DELETE、UPDATE(這裏以保存收藏功能爲例(PUT 請求),對應每個服 Resource 中的@RequestMapping(value = "save", method = RequestMethod.PUT))
2. Json 參數: 其中 POST、DELETE、UPDATE 可能傳遞參數經過 json,也可能經過路徑直接拼接參數,這邊以傳遞 json 到服務端爲實例,對應服務端代碼:
public JSONObject save(@RequestBody JSONObject obj, BookmarkTag bookmarkTag) {
3. 請求 URL:rest 服務請求地址,對應 XXXServiceResource.java 的 mapping 配置中的 value@RequestMapping(value = " save", method = RequestMethod.PUT))
4. 返回的結果以 json 格式返回給客戶端
三、 服務列表(這邊以個人收藏服務爲例)
3.一、 添加標籤分類
3.二、 刪除分類標籤
3.三、 更新分類標籤
3.四、 獲取分類標籤列表