PUT请求是否应与来自同一资源的GET响应兼容

时间:2019-03-15 22:39:05

标签: rest

我正在审查许多将是复杂API开头的端点。

是否有任何行业推荐的最佳实践,这些最佳实践表明您应该确保GET请求的响应可以用作针对同一资源的PUT请求的有效负载。

此外,我希望您能反馈人们采用此方法可能会遇到的陷阱。

1 个答案:

答案 0 :(得分:1)

我会说“有帮助”,但这并不是绝对必要的。由于内容协商和多种表示形式很重要,因此您可以使用其他媒体类型来“更改”与“检索”资源状态。

如果请求的表示形式是一个简单的子集,则也许PATCH是您要查找的内容。

如果PUT请求的响应中包含ETag,则可以预期PUT的请求正文与当前状态逐字节完全匹配。实际上,这种情况很少见,因为API倾向于重新序列化其模型,并且通常会有细微的差异。

拥有该ETag会有所帮助,因为更聪明的客户端可以读取该ETag并使用它来预热其资源的当前缓存状态,并且如果需要更多PUT,则可以避免竞争情况未来,客户希望使用ETag来避免丢失更新问题。

就我个人而言,我喜欢GET资源,再次更改单个属性PUT完整资源的功能。