2013-01-06 75 views

回答

16

主要原因是客戶端(甚至一些服務器)不存儲表示的表示位置。例如,如果您wget http://.../foo.json,表示將被保存到磁盤,但它被提取的URI將不會被保存。如果沒有「自我」的鏈接嵌入表示,這會導致兩個問題:

  1. 文檔中的相對鏈接可能不再有針對其解決的基礎,因此將是「破」;和

  2. 客戶端將沒有嵌入的概念, PUT如果文檔修改該文檔,則返回到服務器。少數客戶獨立維護這些信息,但大多數客戶不會。

明白表示可以有自己的生活以及外面的HTTP對話是非常重要的,甚至可能是通過其他協議(電子郵件,FTP,在書等)轉移。因此,有經驗的媒體設計師通常會包含一個「自我」鏈接。

1

當資源返回時,它可能不是完整的表示。 self鏈接應該提供一個url來訪問完整的表示形式

GET /objects

[ 
    { 
    "name": "tech", 
    "links": [ 
     "rel": "self", 
     "href": "/objects/1" 
    ] 
    }, 
    { 
    "name": "book", 
    "links": [ 
     "rel": "self", 
     "href": "/objects/2" 
    ] 
    } 
] 

GET /objects/1

{ 
    "name": "tech", 
    "ratio": 1, 
    "precision": 2, 
    "links": [ 
    { 
     "rel": "self", 
     "href": "/objects/1" 
    } 
    ] 
}