我在 REST 上阅读的所有文章和书籍都重复了将“自我”相关链接添加到您的超媒体响应的重要性,但它们都对原因和用例有所了解。
为什么要添加自我链接,它有什么用处?
我在 REST 上阅读的所有文章和书籍都重复了将“自我”相关链接添加到您的超媒体响应的重要性,但它们都对原因和用例有所了解。
为什么要添加自我链接,它有什么用处?
主要原因是客户端(甚至某些服务器)没有将表示的位置与表示一起存储。例如,如果你wget http://.../foo.json
,表示将被保存到磁盘,但获取它的 URI 不会。如果表示中没有嵌入“自我”链接,则会导致两个问题:
文档中的相对链接可能不再具有解析的基础,因此将被“破坏”;和
客户端将没有嵌入的概念,例如PUT
如果他们修改文档,将文档返回到服务器的位置。少数客户独立维护此信息,但大多数客户不这样做。
重要的是要理解,表示可能在 HTTP 对话之外存在,甚至可能通过其他协议(电子邮件、FTP、书本等)传输。因此,经验丰富的媒体类型设计师通常会包含“自我”链接。
返回资源时,它可能不是完整的表示。该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"
}
]
}