我读过的所有关于REST的文章和书籍都反复强调了在超媒体响应中添加“self” rel链接的重要性,但它们对原因和用例都没有详细说明。
为什么应该添加自我链接以及它如何有用?
我读过的所有关于REST的文章和书籍都反复强调了在超媒体响应中添加“self” rel链接的重要性,但它们对原因和用例都没有详细说明。
为什么应该添加自我链接以及它如何有用?
wget http://.../foo.json
命令下载一个表示,那么表示会被保存到磁盘上,但是它被获取时的URI则不会保存下来。如果表示中没有嵌入 "self" 链接,则会导致两个问题:
文档中的相对链接可能无法根据基础URL进行解析,并因此无法正常工作;
如果客户端对表示进行了修改,它将没有内置的概念知道在哪里向服务器发出 PUT
请求。一些客户端会独立维护这些信息,但大多数不会。
当返回一个资源时,可能不是完整的表示。 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"
}
]
}