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



>假设我正在开发一个带有项目容器的 RESTful API:

/items

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

/items/{id}

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

PUT /items/1234

描述 PUT 请求可以在 HATEOAS 约束下创建新项目这一事实的最佳方式是什么,即客户端将在其中指定 {id}?

你会如何在网站上做到这一点?

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

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

如果稍微眯起眼睛,您可能会发现表单所扮演的角色与 URI 模板非常相似。

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

坏消息是:这一点很难。 在万维网中,HTML为我们做了大量的繁重工作。 如果您的 API 也使用其资源的 html 表示形式,那么您可以搭载已经存在的表单。 但是HTML已经不流行了。

在 API 领域,JSON 有很多思想份额,并且有一些媒体类型使用它作为起点。 Sookocheff的2014年调查已经有五年的历史了,但会让你对那里的情况有所了解。

最新更新