假设我正在拍摄一个符合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的值?
发布于 2016-02-05 07:37:36
这样做的可能性很大。这个API不需要一对一的数据表示,因此它需要考虑:
PUT修改资源,如果需要,甚至可以使用链接。PUT。POST公开到该集合中,这将导致汽车更改车主。这取决于系统是如何分布的,可能不是所有的资源都在您的控制之下。人们可以联邦链接到第三方资源,在这种情况下,他们可能没有链接回您的系统,等等。
如果一切都在您的控制之下,所有选项都是可能的。
发布于 2016-02-04 20:23:33
您的PUT请求可以再次包含links属性以进行更新。我设想PUT请求主体应该与您从GET收到的内容几乎完全相同,但是应该使用更新的所有者。
发布于 2016-02-05 08:52:07
在hypermedia中,服务器应该通过某种超媒体格式(HAL,.)提供链接。客户端不应直接创建、更新或删除这些链接。您应该有属性所有者和驱动程序,客户端可以更新这些属性,但不能链接到所有者或驱动程序的详细信息。这些指向所有者和驱动程序详细信息的链接应该生成服务器,而不是客户端。服务器可以随着时间的推移更改资源的URL。
https://stackoverflow.com/questions/35210853
复制相似问题