REST學習(二)

搞清楚用的是什麼,怎麼用:

REST 應用以“資源表述的轉移(the transfer of representations of resources)”爲中心來做請求和響應。

  • URI定位資源
  • 用HTTP動詞(GET,POST,DELETE,DETC)描述操作

REST描述的是在網絡中client和server的一種交互形式;REST本身不實用,實用的是如何設計 RESTful API(REST風格的網絡接口)。增刪改查都是一個地址,具體靠http頭部信息判斷。

  • URL中只使用名詞來指定資源,原則上不使用動詞。
  • Resources(資源)是REST架構或者說整個網絡處理的核心

通俗講就是:資源在網絡中以某種表現形式進行狀態轉移

分解開來:

  • Resource:資源,即數據(前面說過網絡的核心)

  • Representational:某種表現形式,比如用JSON,XML,JPEG等

  • State Transfer:狀態變化。通過HTTP動詞實現。

數據和功能均被視爲資源,用統一資源標識符(URI)來訪問資源。網頁裏面的鏈接就是典型的 URI。該資源由文檔表述,並使用一組簡單的、定義明確的操作來執行。
比如,一個 REST 資源可能是一個城市當前的天氣情況。該資源的表述可以是一個XML文檔,圖像文件,或 HTM L頁面。客戶端可以檢索特定表述,通過更新其數據修改的資源,或者完全刪除該資源。

通過 URI 來標識資源:

系統中的每一個對象或是資源都可以通過一個唯一的 URI 來進行尋址。

統一接口:

顯式地使用 HTTP 方法,建立CRUD(創建Create、檢索Retrieve、更新Update、刪除Delete)操作與 HTTP 方法之間的一對一映射:

  • 若要在服務器上創建資源,用 POST 方法;

  • 若要檢索某個資源,用 GET 方法;

  • 若要更新或者添加資源,用 PUT 方法;

  • 若要刪除某個資源,用 DELETE 方法。

資源多重表述:

Server和Client之間傳遞某資源的一個表現形式,比如用JSON,XML傳輸文本,或者用JPG,WebP傳輸圖片等。URI 所訪問的每個資源都可以使用不同的形式加以表示( XML 或JSON等等),具體的表現形式取決於訪問資源的客戶端,客戶端與服務提供者使用一種內容協商的機制(請求頭與 MIME 類型)來選擇合適的數據格式,最小化彼此之間的數據耦合。
在 REST 的世界中,資源即狀態,而互聯網就是一個巨大的狀態機,每個網頁是其一個狀態;URI 是狀態的表述;REST 風格的應用則是從一個狀態遷移到下一個狀態的狀態轉移過程。

無狀態:

用 HTTP Status Code傳遞Server的狀態信息。

  • 對服務器端的請求應該是無狀態的,完整、獨立的請求不要求服務器在處理請求時檢索任何類型的應用程序上下文或狀態。

  • 無狀態約束使服務器的變化對客戶端是不可見的

爲啥是不可見的

比如在兩次連續的請求中,客戶端並不依賴於同一臺服務器。一個客戶端從某臺服務器上收到一份包含鏈接的文檔,當它要做一些處理時,這臺服務器掛掉了——如果這個客戶端訪問了從這臺服務器接收的鏈接,客戶端不會察覺到後臺的服務器已經改變了。通過超鏈接實現有狀態交互,即請求消息是自包含的(每次交互都包含完整的信息),有多種技術實現了不同請求間狀態信息的傳輸,例如 URI ,cookies 和隱藏表單字段等,狀態可以嵌入到應答消息裏,這樣狀態在接下來的交互中仍然有效。
REST 風格應用在狀態遷移的過程中,服務器不需要記錄任何 Session,所有的狀態都通過 URI 的形式記錄在了客戶端。也就是說,無狀態服務器,是指服務器不保存會話狀態(Session);而資源本身則是天然的狀態,通常是需要被保存的;這裏所指無狀態服務器均指無會話狀態服務器。

HTTP請求方法在RESTful Web服務中的應用:

  • 一組資源的URI:

    • GET:列出URI;以及該資源組中每個資源的詳細信息。(後者可選)

    • PUT:使用給定的一組資源替換當前整組資源。

    • POST:在本組資源中創建/追加一個新的資源。(該操作往往返回新資源的URL)

    • DELETE:刪除整組資源。

  • 單個資源的URI:

    • GET:獲取指定的資源的詳細信息,格式可以自選一個合適的網絡媒體格式(比如XML、JSON)

    • PUT:替換/創建指定的資源。並將其追加到相應的資源組中。

    • POST:把指定的資源當作一個資源組,並在其下創建/追加一個新的元素,使其隸屬於當前資源。

    • DELETE:刪除指定的元素。

Maven的項目結構:

  • 標準的管理配置文件pom.xml

  • 源文件路徑src/main/java

  • 資源文件路徑src/main/resources

  • web應用文件src/main/webapp

JAX-RS 資源

JAX-RS 資源是一個可以處理綁定了資源的URI的HTTP請求的帶有註解的POJO。

從看代碼開始

導入項目:

  • Step1:

    在Eclipse project explorer中右擊,在彈出框中選擇import,得到如下圖所示:

選擇要導入的Maven項目

  • Step2:

    選擇Existing Maven Projects,並點擊Next,得到如下圖所示對話框:

這裏寫圖片描述

注意
將pom.xml前面的框選上,因爲工作空間已經導入該項目,所以無法演示勾選!

選擇一個已經創建好的Maven項目,並點擊Finish。
由此,導入Maven項目成功。

  • Step3:運行Maven命令

    右擊項目,點擊Run as,如下圖:

這裏寫圖片描述

即可看到有很多現有的maven命令,點擊即可運行,並在控制檯可以看到運行信息。
如果想運行的maven命令在這裏沒有找到,點擊Maven build創建新的命令,操作如下圖所示:

這裏寫圖片描述

新增的maven命令可以通過如下方式找到,並再次運行:

這裏寫圖片描述

重點注意:

Maven本地倉庫地址一定不要包含漢字!尤其win10系統下,若是用戶名是漢字,Maven倉庫地址默認路徑是在C盤下用戶文件夾下的.m2文件夾中
這裏寫圖片描述

aaa是電腦的用戶名,若是中文用戶名在構建項目時會報錯,可以從控制檯的輸出信息中看到相關的提示,其中就會包含該路徑信息錯誤,導致項目構建不成功。
若是用戶名已經爲中文,win10家庭版已經將修改用戶名的功能閹割,可以通過修改Maven的setting文件中的本地倉庫默認地址來解決這個問題,新定義的倉庫地址一定不要包含漢字!

Eclipse編輯器相關設置:

  • 關閉驗證

    在工具欄選擇Window下面的Perferences

這裏寫圖片描述

然後按照下圖所示,將驗證關閉

這裏寫圖片描述

  • Eclipse的Java的JDK設置:

    同樣時在工具欄選擇Window下面的Perferences,然後進行如下操作:

    這裏寫圖片描述

默認的是指向Java的jre路徑,點擊Edit選項將其改爲指向jdk路徑,如下圖所示:

這裏寫圖片描述

  • Eclipse的Maven設置

這裏寫圖片描述

  • Eclipse的Server設置

    同樣時在工具欄選擇Window下面的Perferences,然後進行如下操作:

這裏寫圖片描述

選擇Runtime Environment後點擊Add按鈕

這裏寫圖片描述

這裏寫圖片描述

Window-Show View-Servers,增加Server,選擇上一步的TomEE完成後,雙擊上一步中的Server

這裏寫圖片描述

勾選如下內容並保存:

這裏寫圖片描述

數據源創建後,注意要將對應的驅動jar放到tomee的lib中,這裏用的是ojdbc7.jar包。

設置jsp修改後熱部署

在Servers項目中的“TomEE localhost-config”修改web.xml,找到jsp的Servlet配置,修改development參數爲true。

這樣項目的運行環境就設置好了,可以將項目部署到這裏運行訪問。

啓動項目,瀏覽器中訪問

 http://localhost:8080/項目名稱

即可進行訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章