要返回的HTTP响应状态

时间:2011-10-25 09:39:02

标签: java rest http-status-codes

我有一个REST操作。用户想要删除一个对象。

  • 如果发生数据库错误
  • 如果发生IOException,则使用response.getWriter()写入响应。

我应该返回哪个状态码(500,503等)。(我的意思是哪一个更方便?)

4 个答案:

答案 0 :(得分:3)

500声音在这里最合适,除非你因为服务器过载而知道

如果response.getWriter()(或稍后对作者的调用)抛出IOException,那么我怀疑你已经超出能够有效影响客户收到的响应的阶段了。

答案 1 :(得分:1)

没有那么多500个代码,并且大多数代码除了“数据库失败”/“ioexception出现”之外还有meaning。请注意,您应该区分出哪种类型的数据库错误,例如:删除不存在的对象(记得检查DELETE语句的“受影响的行”)将导致404状态。

对于您的两个示例,您应该返回状态500.虽然如果在response.getWriter()上发生IO异常,则返回错误可能为时已晚,或者无论如何都无法到达客户端。

并且,请查看twitter api以及this页面使用的回复代码。

答案 2 :(得分:0)

如果这是一个临时错误,503是合适的,因为它通常意味着“稍后重试”。我不认为大多数数据库错误属于该类别。在大多数情况下,通用500是最佳响应。 500列表中的选项不多:

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_Error

如果由于删除操作无效或类似错误而导致错误,则禁止使用403,我将使用它:)

答案 3 :(得分:0)

您尚未向我们提供足够的信息以便能够回答有关数据库错误的问题。如果由于违反参照完整性约束而导致数据库错误,那么您应该返回400错误,因为它是客户端的错误。

您关注哪种数据库错误?