【发布时间】:2019-09-03 16:25:14
【问题描述】:
假设我正在开发一个带有项目容器的 RESTful API:
/items
各个项目将由以下 URI 标识:
/items/{id}
描述新项目可以在 HATEOAS 约束下通过 PUT 请求创建这一事实的最佳方式是什么,即客户端指定 {id} 的位置?
PUT /items/1234
【问题讨论】:
假设我正在开发一个带有项目容器的 RESTful API:
/items
各个项目将由以下 URI 标识:
/items/{id}
描述新项目可以在 HATEOAS 约束下通过 PUT 请求创建这一事实的最佳方式是什么,即客户端指定 {id} 的位置?
PUT /items/1234
【问题讨论】:
描述新项目可以在 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 现在已经 5 岁了,但会让你对外面有什么有所了解。
【讨论】: