Rest HATEOAS与PUT/POST的链接

Rest HATEOAS与PUT/POST的链接,rest,api-design,hateoas,hypermedia,Rest,Api Design,Hateoas,Hypermedia,对于资源上的POST/PUT/补丁来说,最好的方式是什么?这些操作具有有效负载,但我们无法在HATEOAS链路中表示有效负载,因为它们不是预先确定的,并且可能很重。那么,仅仅指定端点和指定操作就足够了吗 使用HATEOASPOST/PUT/PATCH链接的JSON响应非常感谢任何示例或示例。链接由两个元素组成:href和rel。href包含查找资源的显式URL。rel标识当前资源和链接资源之间的关系。应使用rel确定可接受的HTTP方法以及应如何使用链接 以下是对RESTful Web服务食谱第

对于资源上的
POST
/
PUT
/
补丁
来说,最好的方式是什么?这些操作具有有效负载,但我们无法在HATEOAS链路中表示有效负载,因为它们不是预先确定的,并且可能很重。那么,仅仅指定端点和指定操作就足够了吗


使用HATEOAS
POST
/
PUT
/
PATCH
链接的JSON响应非常感谢任何示例或示例。

链接由两个元素组成:
href
rel
href
包含查找资源的显式URL。
rel
标识当前资源和链接资源之间的关系。应使用
rel
确定可接受的HTTP方法以及应如何使用链接

以下是对RESTful Web服务食谱第5.4节的引用:

链接关系类型表示链接的角色或目的。一旦客户机和服务器对这些类型的含义达成一致,客户机就可以从链接中查找和使用URI

例如,
edit
是一个包含有关使用
GET
PUT
POST
DELETE
的详细信息的程序

链接关系可以扩展,您可以添加自己的链接关系

这些操作有有效载荷,但我们没有选择在HATEOAS链路中表示有效载荷,因为它们不是预先确定的,可能很重

通常的答案是,您可以在描述用于表示的媒体类型时记录操作

一个要考虑的参考是基本思想是,媒体类型的规范告诉您如何解释文档,包括对文档的解释

另见

REST API应该将其几乎所有的描述性工作用于定义用于表示资源和驱动应用程序状态的媒体类型,或者为现有标准媒体类型定义扩展关系名称和/或支持超文本的标记。描述在感兴趣的URI上使用什么方法的任何工作都应该完全在媒体类型的处理规则范围内定义

通常,PUT和PATCH应该是非常直接的——这些是远程创作方法;PUT的请求主体通常只是GET提供的表示的编辑版本,而补丁只是描述编辑的不同方式(通常使用标头描述的媒体类型之一)


POST是一个困难的问题——因为POST语义有非常松散的约束,有很多自由度。如果您无法描述额外的约束条件,那么您必须更加仔细地定义媒体类型。

请查看siren规范。它使用了一种叫做actions的东西,这对于可操作的项目来说非常好。在下一页中搜索示例