REST API中链接rel =“ self”的意义是什么?


11

我经常在HTML文档中看到以下内容

<link rel="self" href="http://example.com/something">

或像这样的JSON

 link: {
     rel="self",
     href="http://example.com/something"
 }

或XML

 <atom:link rel="self" href="http://example.com/something" />

所以我有一些问题:

  1. 为什么要包含此链接?它带来什么好处?(请告诉我这是有原因的,而不仅仅是“好的做法”护身符)
  2. 如何在客户中利用此链接?此链接的用例是什么?
  3. 我什么时候不应该使用此链接?什么时候包括它毫无意义?

3
“单击此处以为此页面添加书签”将是一个使用案例,您可以利用“自我”参考。更一般而言,由于REST是无状态的,因此服务器无法知道请求的来源,因此返回的页面完全可能需要知道自己的URI。
罗杰

似乎这样的评论将是一个很好的答案:)
Mike Chamberlain 2014年

Answers:


8

它是一个自引用,因此客户端将知道IRI(http://example.com/something)是表示所涉及的资源的标识符。

例如http://example.com/users/1,当您的资源可以有多个标识符并且http://example.com/users/1?fields="name"可以标识相同的资源,但是对它们的GET可以导致不同的表示形式时,这一点很重要。

通过HAL之类的媒体类型,您也可以使用它来识别嵌入式资源。例如:

{
    "nick": "John",
    "_embedded": {
        "cars": {
            "items": [
                //...
            ],
            "_links": {
                "self": {
                    "href": "http://example.com/users/john/cars"
                }
            }
        }
    },
    "_links": {
        "self": {
            "href": "http://example.com/users/john"
        }
    }
}


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.