天天看點

jeesz分布式架構-RestFul服務

摘要: REpresentational State Transfer (REST) 是一種架構原則,其中将 web 服務視為資源,可以由其 URL 唯一辨別。 RESTful Web 服務的關鍵特點是明确使用 HTTP 方法來表示不同的操作的調用。 REST 的基本設計原則對典型 CRUD 操作使用 HTTP 協定方法: POST - 建立資源 GET - 檢索資源 PUT – 更新資源 DELETE - 删除資源 REST 服務的主要優勢在于:

 1. REST介紹

REpresentational State Transfer (REST) 是一種架構原則,其中将 web 服務視為資源,可以由其 URL 唯一辨別。

RESTful Web 服務的關鍵特點是明确使用 HTTP 方法來表示不同的操作的調用。

REST 的基本設計原則對典型 CRUD 操作使用 HTTP 協定方法:

POST - 建立資源

GET - 檢索資源

PUT – 更新資源

DELETE - 删除資源

REST 服務的主要優勢在于:

它們是跨平台 (Java、.net、PHP 等)高度可重用的,因為它們都依賴基本 HTTP 協定。

它們使用基本的 XML,而不是複雜的 SOAP XML,使用非常友善。

基于 REST 的 web 服務日益成為後端企業服務內建的首選方法。與基于 SOAP 的 web 服務相比,它的程式設計模型簡單,而本機 XML(而不是 SOAP )的使用減少了序列化和反序列化過程的複雜性,并且不再需要其他作用相同的第三方庫。

2. 編寫目的

編寫本文的目的是為了将系統功能進行子產品化、服務化,将使用者的操作以服務的方式提供。系統與系統之間遵循服務規範,将系統與系統之間的互動轉為定制化服務互動,以實作系統與系統之間的內建

3. 編寫原則

可尋址性(Addressability)

REST 中的所有東西都基于資源 的概念。資源與 OOP 中的對象或其他名詞不同,它是一種抽象,必須可以通過 URI 尋址或通路。

接口一緻性(Interface uniformity)

與 SOAP 或其他标準不同,REST 要求用來操縱資源的方法或動詞不是任意的。這意味着 RESTful 服務的開發人員隻能使用 HTTP 支援的方法,比如GET、PUT、POST、DELETE等等。是以不需要使用 WSDL 等服務描述語言

無狀态(Statelessness)

為了增強可伸縮性,伺服器端不存儲客戶機的狀态資訊。這使伺服器不與特定的客戶機相綁定,負載平衡變得簡單多了。這還讓伺服器更容易監視、更可靠

具象(Representational)

客戶機總是與資源的某種具象互動,絕不會直接與資源本身互動。同一資源還可以有多個具象。理論上說,持有資源的具象的任何客戶機應該有操縱底層資源的足夠資訊。

  連通性(Connectedness)

任何基于 REST 的系統都應該預見到客戶機需要通路相關的資源,應該在傳回的資源具象中包含這些資源。例如,可以以超連結的形式包含特定 RESTful 服務的操作序列中的相關步驟,讓客戶機可以根據需要通路它們。

4. 服務使用說明

 1) 目前系統已經提供的服務

jeesz分布式架構-RestFul服務

   2)  GET方式調用服務

jeesz分布式架構-RestFul服務

說明:

  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格式傳回給用戶端

   3) POST、DELETE、UPDATE方式調用服務

jeesz分布式架構-RestFul服務

 說明:

  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格式傳回給用戶端

5.  服務清單(僅僅列舉執行個體)

    1)添加标簽

jeesz分布式架構-RestFul服務

    2)删除标簽

jeesz分布式架構-RestFul服務

    3)更新标簽

jeesz分布式架構-RestFul服務

    4)擷取标簽清單

jeesz分布式架構-RestFul服務

繼續閱讀