Rest 如何根据HATEOAS约束使用PUT建模资源的创建?

Rest 如何根据HATEOAS约束使用PUT建模资源的创建?,rest,put,hateoas,Rest,Put,Hateoas,假设我正在开发一个包含项的容器的RESTful API: /items 单个项目将由URI标识,如: /items/{id} 描述在HATEOAS约束下通过PUT请求可以创建新项这一事实的最佳方式是什么,即客户端将在何处指定{id} PUT /items/1234 描述在HATEOAS约束下通过PUT请求可以创建新项这一事实的最佳方式是什么,即客户端将在何处指定{id} PUT /items/1234 你会如何在网站上做到这一点 你可能会有一些资源提供一个表单;表单将包括id,可能还有其

假设我正在开发一个包含项的容器的RESTful API:

/items
单个项目将由URI标识,如:

/items/{id}
描述在HATEOAS约束下通过PUT请求可以创建新项这一事实的最佳方式是什么,即客户端将在何处指定{id}

PUT /items/1234
描述在HATEOAS约束下通过PUT请求可以创建新项这一事实的最佳方式是什么,即客户端将在何处指定{id}

PUT /items/1234
你会如何在网站上做到这一点

你可能会有一些资源提供一个表单;表单将包括
id
,可能还有其他有趣的东西。客户机将填写表单(使用语义提示解释每个字段中属于哪些信息)。提交表单时,HTML处理规则将表单值编码为
应用程序/x-www-url-formencoded
表示,该表示将成为目标url的查询部分。服务器将检查有效负载,计算适当的目标URI,并向客户端发送重定向响应

然后,客户端可以将etc获取/放置/发布到服务器推荐的资源

如果你稍微斜视一下,你可能会看到表单扮演着一个非常相似的角色

因此,基本草图非常简单:客户机和服务器必须就描述模板(及其语义)的媒体类型以及相应的处理规则达成一致

坏消息是:这一点很难做到。在万维网中,HTML为我们做了大量繁重的工作。如果您的API也使用其资源的html表示,那么您可以利用已有的表单。但是HTML已经有点过时了


在API领域,JSON有很多思想共享,并且有一些媒体类型使用它作为起点。他现在已经五岁了,但会让你了解外面的情况。

谢谢,形式想法有优点,我会考虑一下。我研究了RFC6570模板,我喜欢通过Link:和Link-Template:头记录链接的想法,并使用选项记录可用的HTTP方法,但我猜在RFC6570 URI模板上不可能进行HTTP请求(即选项)?可能链接模板:rel=URL到文档(即/rels/items/item)。