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