HATEOAS链接与PUT/POST

17
什么是在资源上表示HATEOAS POST/PUT/PATCH的最佳方法?这些操作具有有效载荷,但我们没有选项将有效载荷表示为HATEOAS链接,因为它们不是预先确定的,可能很重。因此,仅指定端点并指定操作是否足够?关于带有HATEOAS POST/PUT/PATCH链接的JSON响应的任何示例或示例都将受到高度赞赏。

2
看一下警报规范。它使用了称为“actions”的东西,非常适合可操作项。在以下页面中搜索示例https://github.com/kevinswiber/siren。 - TheOneWhoPrograms
2个回答

2
链接由两个元素组成:hrefrelhref 包含定位资源的显式URL。 rel 标识当前资源与链接的资源之间的关系。应使用 rel 确定接受哪种HTTP方法以及如何使用链接。
以下是摘自《RESTful Web Services Cookbook》第5.4节的引用:
“链接关系类型传达了链接的角色或目的。一旦客户端和服务器同意这些类型的含义,客户端可以找到并使用来自链接的URI。”
例如,edit 是一个标准链接关系,具有明确的细节,包括有关使用 GETPUTPOSTDELETE 的详细信息。
链接关系可以扩展,您可以添加自己的链接关系。

0
这些操作有有效载荷,但我们将无法在HATEOAS链接中表示有效载荷,因为它们不是预定的,可能很重?
通常的答案是在您使用的表述的媒体类型的描述中记录操作。
一个参考文献可供考虑 Atom Syndication/Atom Pub。基本思想是媒体类型的规范告诉您如何解释文档,包括链接关系的解释。
另请参见Fielding, 2008
一个REST API应该花费几乎所有的描述性努力来定义用于表示资源和驱动应用状态的介质类型,或者定义扩展关系名称和/或基于超文本的标记语言用于现有标准媒体类型。任何花费在描述何时使用哪些URI方法的努力都应完全在介质类型处理规则的范围内定义。
通常情况下,PUT和PATCH应该非常简单 - 这些是远程创作方法; PUT的请求正文通常只是GET提供的表示的编辑版本,而PATCH只是以不同的方式描述编辑(通常使用Accept-Patch标题描述的媒体类型之一)。
POST是难点 - 因为POST语义具有非常松散的约束条件,有很多自由度。如果你不能在行内描述附加约束条件,那么你必须更加依赖于你对媒体类型的定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接