Rest PUT请求是否应该与来自同一资源的GET响应兼容
我正在回顾一些端点,这些端点是针对复杂API的开始而开发的 是否有任何行业推荐的最佳实践表明,您应该确保GET请求的响应可以用作针对相同资源的PUT请求的有效负载Rest PUT请求是否应该与来自同一资源的GET响应兼容,rest,Rest,我正在回顾一些端点,这些端点是针对复杂API的开始而开发的 是否有任何行业推荐的最佳实践表明,您应该确保GET请求的响应可以用作针对相同资源的PUT请求的有效负载 此外,我希望您能对采取这种方法的人可能遇到的陷阱提供反馈。我会说“这很有帮助”,但严格来说这并不是必要的。因为内容协商和多个表示是一回事,所以您可以使用不同的媒体类型来“更改”或“检索”资源的状态 如果请求的表示是一个简单的子集,那么您可能需要的是PATCH 如果PUT请求的响应包含ETag,则PUT的请求正文应与当前状态完全匹配。但
此外,我希望您能对采取这种方法的人可能遇到的陷阱提供反馈。我会说“这很有帮助”,但严格来说这并不是必要的。因为内容协商和多个表示是一回事,所以您可以使用不同的媒体类型来“更改”或“检索”资源的状态 如果请求的表示是一个简单的子集,那么您可能需要的是
PATCH
如果PUT
请求的响应包含ETag
,则PUT
的请求正文应与当前状态完全匹配。但事实上,这种情况很少发生,因为API倾向于重新序列化其模型,并且通常会有细微的差异
不过,拥有该ETag是有帮助的,因为更智能的客户端可以读取该ETag并使用它来预热其当前缓存的资源状态,并且如果将来需要更多的PUT
,并且客户端希望使用ETag来避免丢失的更新问题,则还可以避免竞争条件
就我个人而言,我喜欢获取
资源,更改单个属性再次放置
完整资源的能力。,这是后续获取将返回的功能。