假设我正在开发带有项目容器的RESTful API:
/items
,单个项目将由URI标识,例如:
/items/{id}
描述在HATEOAS约束下,PUT请求可以创建新项目的最佳方法是什么,即客户在哪里指定{id}?
PUT /items/1234
答案 0 :(得分:1)
描述在HATEOAS约束下,PUT请求可以创建新项目的最佳方法是什么,即客户在哪里指定{id}?
您将如何在网站上做到这一点?
您可能会有一些提供表格的资源;表格中将包含id
,以及其他可能有趣的内容。客户将填写表格(使用语义提示来解释每个字段中属于哪些信息)。提交表单后,HTML处理规则会将表单值编码为application/x-www-url-formencoded
表示形式,这将成为目标URL的查询部分。服务器将检查有效负载,计算适当的目标URI,然后将重定向响应发送给客户端。
然后,客户端可以对服务器推荐的资源进行GET / PUT / POST等操作。
如果斜视一下,您可能会看到表单的作用与URI Template非常相似。
因此,基本草图非常简单:客户端和服务器必须就描述模板(及其语义含义)的媒体类型以及相应的处理规则达成共识。
这是个坏消息:这很难。在万维网上,HTML正在为我们做大量的工作。如果您的API也使用其资源的html表示形式,那么您可以背负已有的表单。但是HTML有点过时了。
在API领域,JSON具有很多思想分享,并且有几种媒体类型将其用作起点。 Sookocheff's 2014 survey现在已经五岁了,但是可以让您对其中的内容有所了解。