21

我在 REST 上阅读的所有文章和书籍都重复了将“自我”相关链接添加到您的超媒体响应的重要性,但它们都对原因和用例有所了解。

为什么要添加自我链接,它有什么用处?

4

2 回答 2

20

主要原因是客户端(甚至某些服务器)没有将表示的位置与表示一起存储。例如,如果你wget http://.../foo.json,表示将被保存到磁盘,但获取它的 URI 不会。如果表示中没有嵌入“自我”链接,则会导致两个问题:

  1. 文档中的相对链接可能不再具有解析的基础,因此将被“破坏”;和

  2. 客户端将没有嵌入的概念,例如PUT如果他们修改文档,将文档返回到服务器的位置。少数客户独立维护此信息,但大多数客户不这样做。

重要的是要理解,表示可能在 HTTP 对话之外存在,甚至可能通过其他协议(电子邮件、FTP、书本等)传输。因此,经验丰富的媒体类型设计师通常会包含“自我”链接。

于 2013-01-06T18:40:27.450 回答
4

返回资源时,它可能不是完整的表示。该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"
    }
  ]
}      
于 2017-01-06T20:12:56.993 回答