假设我正在为符合HATEOAS标准的API拍摄。我提供了端点/cars/{id}
。如果用户要拨打GET /cars/12
,他们会看到类似的内容:
{
"color": "Red",
[...],
"links": [
{ "rel": "driver", "href": "/people/123" },
{ "rel": "owner", "href": "/people/456" },
]
}
在此模型中,如何更新关系?比方说,这辆车卖给了/people/42
。 PUT
是否会更改owner
href
的价值?
答案 0 :(得分:2)
有很多可能性来做到这一点。此API不需要是一对一的数据表示,因此请注意:
PUT
修改资源,如果需要,也可以修改链接PUT
新的所有者POST
到该集合的资源,这会导致汽车更改所有者这取决于系统的分布情况,可能并非所有资源都在您的控制之下。人们可以是第三方资源的联合链接,在这种情况下,他们可能没有链接回系统等。
如果一切都在您的控制之下,那么所有选项都是可能的。
答案 1 :(得分:1)
您的PUT
请求可以再次包含links
属性以进行更新。我认为PUT
请求正文应该与您从GET
收到的内容几乎相同,但更新后的所有者。
答案 2 :(得分:0)
在HATEOAS服务器中应该通过某种超媒体格式(HAL,...)提供链接。客户端不应直接创建,更新或删除这些链接。您应该拥有属性所有者和驱动程序,客户端可以更新这些属性,但不能更新所有者或驱动程序的详细信息。那些指向所有者和驱动程序详细信息的链接应生成服务器,而不是客户端服务器可以随时更改资源的URL。