我有一个REST操作。用户想要删除一个对象。
response.getWriter()
写入响应。我应该返回哪个状态码(500,503等)。(我的意思是哪一个更方便?)
答案 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错误,因为它是客户端的错误。
您关注哪种数据库错误?