当要求更新未找到或未更新的记录时,应该将http返回给客户端的内容是什么?

时间:2018-04-05 13:31:10

标签: rest http

我正在使用一个mysql库,当我对数据库执行更新时,如果得到一个代表的数字1/0

if record was not found 0 returned

if record found and something was changed 1 returned

if record found and nothing was not changed 0 returned

所以我希望在找到记录并更改某些内容时返回使用200,并且我试图想如果结果为0,我应该返回用户的内容?它应该是200吗?也许用户应该知道找不到记录......

事情是我不想再打电话看是否有记录然后执行更新,我想保留它尽可能少的电话......

谢谢!

1 个答案:

答案 0 :(得分:0)

你理想的情况应该是:

  • 如果记录成功更新,则使用200 OK / 204 No Content
  • 404 Not Found如果找不到记录
  • 如果记录未更新,则
  • 409 Conflict

现在您的主要问题听起来像#34;服务器无法确定更新失败的真正原因"。原因服务器无法做到这一点,它无法决定是发送404还是409状态。

有了这一切,你现在的情况是,如果服务器返回任何状态而不是OK(200/204),那么客户端在更新期间不知道什么是失败的。而且这个强制客户端无论如何都会做出额外的请求来确定真正的原因。

为避免在服务器上针对每个请求进行额外检查,您可以做的是验证资源是否存在,仅用于失败的情况。换句话说

  • 更新查询 - >如果查询返回0,请执行另一个选择查询以检查现有资源