《Spring Rest》學習:第一章 資源和表現

資源(Resource):數據庫

REST的基礎就是資源這個概念。
json

資源能夠是任何能夠被訪問或處理的東西。舉例來講,資源包括「視頻」,「博客日誌」,「用戶資料」,「圖像」,甚至任何能夠感觸的事物,如人和設備等。瀏覽器

資源能夠關聯到其餘資源。如在一個電商平臺中,一個顧客能夠爲任意數量的產品下訂單。在這個場景中,產品資源就和對應的訂單資源產生了關聯。spa

資源還能夠分組到集合(collections)中。用上面的電商平臺的例子,"多筆訂單"(orders) 就是單個訂單資源的集合。
日誌


表現(Representation):視頻

REST的資源是一個個抽象的實體。資源中的數據和元數據在發送給客戶端以前須要序列化到一個表現(Representation)中。xml

表現能夠看做是資源在某個給定時點的狀態的快照(snapshot)資源

假設在上面的那個電商系統中,有一個數據庫表存儲了全部可售產品的信息。開發

當在線買家用他們的瀏覽器購買產品和請求產品信息時,電商系統會以HTML網頁的形式將產品的細節信息提供給他們;get

如今,當一個正在開發原生移動應用的開發人員請求產品細節時,電商系統會以XML或者JSON的格式將產品信息返回給開發者。

在上面的兩個場景中,客戶端並無直接和實際的資源:數據庫進行交互。取而代之的是資源的表現:每一個客戶端只處理各自的資源表現。

注意:REST的組件經過傳輸資源的表現和資源進行來回交互。它們從不直接和資源發生交互。

正如上面的產品的例子中所提到的那樣,同一個資源能夠有幾種不一樣的表現,從基於文本的HTML,XML,和JSON格式到諸如PDF,JPEG,和MP4等二進制格式。

客戶端請求某種特定的表現是能夠的,而這一處理過程的術語是「內容議付」(Content negotiation)。

如下是兩種可能的內容議付策略:

  • URI後綴表現:示例:一個發出以JSON爲表現格式對產品細節的請求的客戶端,將可以使用以下形式的URI:

    http://www.example.com/products/143.json.

    另外一個客戶端可能使用以下的URI    

    http://www.example.com/products/143.xml 來獲取XML格式的產品細節信息。

  • 使用Accept頭部:客戶端能夠在HTTP 的Accept頭部附上須要的表現格式,而後和request一塊兒發送。處理該資源的應用將會使用Accept頭部信息值去序列化被請求的表現。

注意:JSON已經成爲REST服務事實上的標準的表現形式。

相關文章
相關標籤/搜索