【发布时间】:2012-12-06 22:47:02
【问题描述】:
好的。我想知道在这种情况下可能的 HTTP 状态(响应)代码是什么。
比方说,POST /Student/ 创建了一个学生资源。假设有多个表要更新。 Student 资源已创建。
通常,创建资源时,应立即在响应中以200 Successful返回该资源。
但是,假设资源已创建,但当您尝试提取资源(来自数据库的查询)时失败。我们应该返回什么状态码?
`201 Created`? (No resource)
'200 Successful`? but without the resource.
`500 Internal Server Error`?
还有什么?
我猜这是一个相当普遍的场景。
编辑
我想澄清一下。
首先,创建资源的所有 ONE POST 调用。
响应应为 200,资源对象为 JSON。
但是在检索资源的过程中only出错(资源创建成功)。
无法从数据库中获取资源的原因可能是间歇性的,并且可能与服务器/网络相关,稍后可以识别和修复。但是资源确实创建成功了。
【问题讨论】:
-
如果查询失败,我会说 500;如果查询没有结果,404.
-
但是如果我们返回500,客户端如何知道资源是否被创建?
-
另外,为什么不在创建时返回
201 Created? -
换一种说法,如果资源被创建了,为什么不返回呢?这不构成服务器故障吗?事实上,如果你在一个事务中运行它,你会因为任何错误而中止它,然后返回 500。
-
我在给@iserni 的评论中提到了可能的原因