我正在审查许多将是复杂API开头的端点。
是否有任何行业推荐的最佳实践,这些最佳实践表明您应该确保GET请求的响应可以用作针对同一资源的PUT请求的有效负载。
此外,我希望您能反馈人们采用此方法可能会遇到的陷阱。
答案 0 :(得分:1)
我会说“有帮助”,但这并不是绝对必要的。由于内容协商和多种表示形式很重要,因此您可以使用其他媒体类型来“更改”与“检索”资源状态。
如果请求的表示形式是一个简单的子集,则也许PATCH
是您要查找的内容。
如果PUT
请求的响应中包含ETag
,则可以预期PUT
的请求正文与当前状态逐字节完全匹配。实际上,这种情况很少见,因为API倾向于重新序列化其模型,并且通常会有细微的差异。
拥有该ETag会有所帮助,因为更聪明的客户端可以读取该ETag并使用它来预热其资源的当前缓存状态,并且如果需要更多PUT
,则可以避免竞争情况未来,客户希望使用ETag来避免丢失更新问题。
就我个人而言,我喜欢GET
资源,再次更改单个属性PUT
完整资源的功能。