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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当要求更新未找到或未更新的记录时,应该将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吗?也许用户应该知道找不到记录......

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

谢谢!

答案

你理想的情况应该是:

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

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

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


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

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

以上是关于当要求更新未找到或未更新的记录时,应该将http返回给客户端的内容是什么?的主要内容,如果未能解决你的问题,请参考以下文章

在Angular Js中重新加载后,如何将复选框(选中或未选中)从javascript控制器更新到html页面?

CloudKit 仪表板未更新

当 AlertDialog 中的复选框选中或未选中时,Flutter 更新 Reorderable ListView

如何在 jquery 数据表中找到空表或未找到匹配项时添加自定义警告消息

WatchOS 4 未收到后台 GPS 更新

行被另一个事务更新或删除(或未保存的值映射不正确)