当前位置:  开发笔记 > 运维 > 正文

在REST中,我应该返回表示以响应PUT吗?

如何解决《在REST中,我应该返回表示以响应PUT吗?》经验,为你挑选了3个好方法。

可以想象,另一个客户也在过渡期间修改了资源的其他方面.因此,尽管有带宽开销,最好还是在PUT响应中始终包含完整表示吗?



1> Stefan Tilko..:

在许多(如果不是大多数)情况下,即使通过PUT创建或更新资源,服务器也会向资源添加内容.示例是时间戳,版本号或从其他人计算的任何元素.即使您遵循RESTful方法并且不使用PUT进行部分更新,也是如此.

仅仅因为这个原因,返回更新或创建的资源的表示通常是PUT请求的一个好主意.不过,我不一定称之为"最佳实践" - 如果您将一个巨大的2GB图像文件丢弃,您可能不希望将其作为响应的一部分返回.

另一方面,包括ETag在内,绝对值得"最佳实践".



2> Kevin Pauli..:

Jldupont的评论指出了我正确的方向.我将使用ETag通过使用If-match标头执行条件PUT来确定资源是否已被修改,如此处所述.

然后,如果发生冲突,我将让用户决定是从服务器获取最新的表示(GET)还是用自己的更改覆盖更改.

因此,不需要在对PUT的响应中返回完整表示以帮助进行冲突检测和解决.



3> S.Lott..:

我觉得GET和DELETE是一对 - 它们只带一个ID.

POST和PUT看起来也像一对.它们采用序列化对象并使其持久化.因此,我认为POST和PUT都应该返回创建的结果对象.

在某些情况下,您可能会在持久性过程中进行其他计算,而PUT可能会反映这些计算结果.从技术上讲,这可能是第三次正常形式违规,因为您有派生值.但通常,Web服务的重点是作为POST和PUT的一部分进行一些增值计算.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有