国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

REST 總覽

2018-08-08 11:39 更新

關于 REST

REST ,英文全稱是 Representational State Transfer ,翻譯成中文是“表述性狀態(tài)轉移”。REST 這個術語是由 Roy Fielding 在他的博士論文 《 Architectural Styles and the Design of Network-based Software Architectures 》中提出的。REST是基于一些現有的流傳較廣的協議和標準,例如 HTTP, URI,以及XML等,由因為 REST,HTTP 協議有了更加正確的使用。我們可以將REST理解為設計模式的一種,它不是標準,只是一種用來開發(fā)Web 應用的架構風格。 

REST模式與基于 SOAP 和 WSDL 的 Web 服務相比的優(yōu)勢在于REST提供的實現方案更為簡潔。REST 提供的是松耦合的 Web 服務,適合為客戶創(chuàng)建在互聯網傳播的輕量級的 Web 服務的API。REST 應用的請求和響應是以“資源表述的轉移(the transfer of representations of resources)”為中心進行的。我們稱的資源包括數據和各種功能,如果要訪問資源,只需要使用統一的資源標識符(URI)即可。我們常見的網頁中的鏈接就是典型的 URI。該資源是通過文檔進行描述的,由一組簡單的、有明確定義的操作執(zhí)行。

例如,一個 REST 資源可能是一座城市當前的天氣情況。可能通過一個XML文檔、圖像文件或者HTML頁面來對該資源進行表述。我們的客戶端能夠檢索特定的表述,通過更新其數據修改的資源,或者完全刪除該資源。

現在,REST 風格越來越受歡迎,而且很多 Web 服務也開始采用它來設計與實現,目前我們所知道的比較著名的 REST 服務包括了:Google AJAX 搜索 API、Amazon Simple Storage Service (Amazon S3) 等。

為了能夠讓 RESTful 應用是輕量的,簡單的并且更快開發(fā),基于 REST 的 Web 服務需要遵循以下一些基本的設計原則:

  • 通過 URI 來標識資源:系統中的每一個對象或是資源都可以通過一個唯一的 URI 來進行尋址,URI 的結構應該簡單、可預測且易于理解,比如定義目錄結構式的 URI。
  • 統一接口:以遵循 RFC-2616 所定義的協議的方式顯式地使用 HTTP 方法,建立創(chuàng)建、檢索、更新和刪除(CRUD:Create, Retrieve, Update and Delete)操作與 HTTP 方法之間的一對一映射:
    • 若要在服務器上創(chuàng)建資源,應該使用 POST 方法;
    • 若要檢索某個資源,應該使用 GET 方法;
    • 若要更新或者添加資源,應該使用 PUT 方法;
    • 若要刪除某個資源,應該使用 DELETE 方法。
  • 資源多重表述:URI 所訪問的每個資源都可以使用不同的形式加以表示(比如 XML 或者 JSON),具體的表現形式取決于訪問資源的客戶端,客戶端與服務提供者使用一種內容協商的機制(請求頭與 MIME 類型)來選擇合適的數據格式,最小化彼此之間的數據耦合。在 REST 的世界中,資源即狀態(tài),而互聯網就是一個巨大的狀態(tài)機,每個網頁是其一個狀態(tài);URI 是狀態(tài)的表述;REST 風格的應用則是從一個狀態(tài)遷移到下一個狀態(tài)的狀態(tài)轉移過程。早期互聯網只有靜態(tài)頁面的時候,通過超鏈接在靜態(tài)網頁間瀏覽跳轉的 page->link->page->link… 模式就是一種典型的狀態(tài)轉移過程。也就是說早期的互聯網就是天然的 REST
  • 無狀態(tài):對服務器端的請求應該是無狀態(tài)的,完整、獨立的請求不要求服務器在處理請求時檢索任何類型的應用程序上下文或狀態(tài)。無狀態(tài)約束使服務器的變化對客戶端是不可見的,因為在兩次連續(xù)的請求中,客戶端并不依賴于同一臺服務器。一個客戶端從某臺服務器上收到一份包含鏈接的文檔,當它要做一些處理時,這臺服務器宕掉了,可能是硬盤壞掉而被拿去修理,可能是軟件需要升級重啟——如果這個客戶端訪問了從這臺服務器接收的鏈接,它不會察覺到后臺的服務器已經改變了。通過超鏈接實現有狀態(tài)交互,即請求消息是自包含的(每次交互都包含完整的信息),有多種技術實現了不同請求間狀態(tài)信息的傳輸,例如 URI 重新,cookies 和隱藏表單字段等,狀態(tài)可以嵌入到應答消息里,這樣一來狀態(tài)在接下來的交互中仍然有效。REST 風格應用可以實現交互,但它卻天然地具有服務器無狀態(tài)的特征。在狀態(tài)遷移的過程中,服務器不需要記錄任何 Session,所有的狀態(tài)都通過 URI 的形式記錄在了客戶端。更準確地說,這里的無狀態(tài)服務器,是指服務器不保存會話狀態(tài)(Session);而資源本身則是天然的狀態(tài),通常是需要被保存的;這里所指無狀態(tài)服務器均指無會話狀態(tài)服務器。
HTTP 請求方法在RESTful Web 服務中的典型應用
資源GETPUTPOSTDELETE
一組資源的URI,
比如 http://www.waylau.com/resources/ 
列出 URI,以及該資源組中每個資
源的詳細信息(后者可選)。
使用給定的一組資源替換當前整組資源。在本組資源中創(chuàng)建/追加一個新的資源。 該操作往往返回新資源的URL。刪除 整組資源。
單個資源的URI,比如http://www.waylau.com/resources/142獲取 指定的資源的詳細信息,格式可以自選一個合適的網絡媒體類型(比如:XML、JSON等)替換/創(chuàng)建 指定的資源。并將其追加到相應的資源組中。把指定的資源當做一個資源組,并在其下創(chuàng)建/追加一個新的元素,使其隸屬于當前資源。刪除 指定的元素。

Java REST

針對 REST 在 Java 中的規(guī)范,主要是 JAX-RS(Java API for RESTful Web Services),該規(guī)范使得 Java 程序員可以使用一套固定的接口來開發(fā) REST 應用,避免了依賴于第三方框架。同時,JAX-RS 使用 POJO 編程模型和基于標注的配置,并集成了 JAXB,從而可以有效縮短 REST 應用的開發(fā)周期。Java EE 6 引入了對 JSR-311 的支持,Java EE 7 支持JSR-339 規(guī)范。

JAX-RS 定義的 API 位于 javax.ws.rs 包中。

伴隨著 JSR 311 規(guī)范的發(fā)布,Sun 同步發(fā)布該規(guī)范的參考實現 Jersey。JAX-RS 的具體實現第三方還包括 Apache 的 CXF 以及 JBoss 的 RESTEasy 等。未實現該規(guī)范的其他 REST 框架還包括 SpringMVC 等。

截至目前, JAX-RS 最新的版本是 2.0 (JSR-339

Why Jersey

在 Java 中,既然 規(guī)范的制定者和實現者都是 Sun 公司(現在是 Oracle),那么 Jersey 毫無疑問就是事實上的標準,對于 Java REST 的初學者來說盡量要跟著標準走。當然,所有規(guī)范的實現,在用法上基本上沒有差別,只是相對來說 Jersey 的實現更全面一些。

本書所有的例子都是基于 Jersey 的,有關 Jersey 的參考,可詳見《Jersey 2.x 用戶指南》。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號