当更新一项资源成功时,返回哪个HTTP状态码? 答案:HTTP状态码为 200 OK。

12
我有一个网站,可以通过HTTP-PUT请求来更新资源。例如,/contact将允许使用者更新联系人信息,前提是他们已经通过验证。
当我成功更新记录后,我需要向使用者返回信息,那么我应该返回什么HTTP状态码呢?
如果这是一个HTTP-POST(即创建一个新的资源),则应返回201 Created并添加一个Location头属性。
但是针对更新操作,我找不到任何线索。

非常好的问题,看起来没有标准的HTTP代码可以使用,所以我会返回一个200 OK。 - laurent
2个回答

20

如果您返回的是某个操作的表示,那么使用状态码200特别合适(尽管正在进行中但即将最后通话的“HTTP bis”在200 OK的描述中奇怪地没有提到PUT)。

如果您不返回任何表示形式,请使用204 No Content来告知客户端它不需要更改其当前“文档视图”。


动作的表示是什么?它是更新后资源的表示还是类似于“Blablabla成功更新”的内容? - rmoestl
1
操作的表示将是“blablabla已成功更新”,通常只有在包括a)对客户有用的详细信息以及b)下一步该做什么的链接时才值得。 - fumanchu
我不同意。在我的经验中,动作的表示通常是更新后的资源。虽然一开始可能看起来有些冗余(因为你刚刚发送了该资源,对吧?),但实际上通常会在资源上有派生/计算字段,例如 updatedAt 字段等,这些字段事先无法预测,因此服务器会返回包含这些派生字段的更新后的资源。 - Stijn de Witt

6

如果PUT请求只更新了资源而没有创建新的资源,那么状态码200是合适的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接