假设我正在开发一个带有容器项的RESTful API:
/items
和个别项目将通过URI识别,如:
/items/{id}
描述在HATEOAS约束下PUT请求可以创建新项目的最佳方式是什么,即客户端指定{id}?
PUT /items/1234
描述在HATEOAS约束下PUT请求可以创建新项目的最佳方式是什么,即客户端指定{id}?
你会如何在网站上做到这一点?
你可能有一些提供表格的资源;形式将包括id
,可能还有其他有趣的东西。客户端将填写表单(使用语义提示来解释每个字段中属于哪些信息)。提交表单时,HTML处理规则会将表单值编码为application/x-www-url-formencoded
表示,该表示将成为target-url的查询部分。服务器将检查有效负载,计算适当的目标URI,并向客户端发送重定向响应。
然后,客户端可以GET / PUT / POST等到服务器推荐的资源。
如果你稍微眯一下,你可能会发现表格的作用非常类似于URI Template。
因此基本草图非常简单:客户端和服务器必须就描述模板(及其语义含义)的媒体类型以及相应的处理规则达成一致。
这是坏消息:这很难。在全球网络中,HTML正在为我们做大量工作。如果您的API也使用其资源的html表示,那么您可以捎带已经存在的表单。但HTML有点不再流行。
在API空间中,JSON有很多心灵共享,并且有一些媒体类型将它作为起点。 Sookocheff's 2014 survey现在五岁了,但会让你知道那里有什么。