首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新HATEOAS

更新HATEOAS
EN

Stack Overflow用户
提问于 2016-02-04 20:20:50
回答 3查看 633关注 0票数 2

假设我正在拍摄一个符合HATEOAS的API。我提供端点/cars/{id}。如果用户要调用GET /cars/12,他们会看到如下内容:

代码语言:javascript
复制
{
    "color": "Red",
    [...],
    "links": [
        { "rel": "driver", "href": "/people/123" },
        { "rel": "owner", "href": "/people/456" },
    ]
}

在这个模型中,我如何更新关系?比如,把车卖给/people/42PUT是否更改owner href的值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-05 07:37:36

这样做的可能性很大。这个API不需要一对一的数据表示,因此它需要考虑:

  • 您可以使用PUT修改资源,如果需要,甚至可以使用链接。
  • 您可以为汽车公开单独的“所有者”资源,并在那里为新车主提供PUT
  • 您可以将“拥有的汽车”资源从用户中公开,并将POST公开到该集合中,这将导致汽车更改车主。

这取决于系统是如何分布的,可能不是所有的资源都在您的控制之下。人们可以联邦链接到第三方资源,在这种情况下,他们可能没有链接回您的系统,等等。

如果一切都在您的控制之下,所有选项都是可能的。

票数 2
EN

Stack Overflow用户

发布于 2016-02-04 20:23:33

您的PUT请求可以再次包含links属性以进行更新。我设想PUT请求主体应该与您从GET收到的内容几乎完全相同,但是应该使用更新的所有者。

票数 1
EN

Stack Overflow用户

发布于 2016-02-05 08:52:07

在hypermedia中,服务器应该通过某种超媒体格式(HAL,.)提供链接。客户端不应直接创建、更新或删除这些链接。您应该有属性所有者和驱动程序,客户端可以更新这些属性,但不能链接到所有者或驱动程序的详细信息。这些指向所有者和驱动程序详细信息的链接应该生成服务器,而不是客户端。服务器可以随着时间的推移更改资源的URL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35210853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档