如果我尝试在数据库中发布一条带有现有记录的POST请求,会发生什么

问题描述 投票:1回答:1

据我所知,REST中PUT和POST方法的主要区别在于POST请求将创建一个新记录,其中PUT请求将更新现有记录/创建新记录(如果不存在)。

现在我的问题是:假设我们在数据库中有一个Id = 1且name =“Pritam”的用户。现在,如果我尝试使用请求主体Id = 1和name =“Pritam”发出POST请求,那么会发生什么。 (重复记录)。将创建新记录或确切发生什么。

请帮助我理解PUT和POST方法之间的区别。何时使用PUT和何时在实时场景中使用POST。

rest post put
1个回答
1
投票

据我所知,REST中PUT和POST方法的主要区别在于POST请求将创建一个新记录,其中PUT请求将更新现有记录/创建新记录(如果不存在)。

那是不对的。 (这也不是你的错 - 误解是常见的)。目前,RFC 7231描述了POSTPUT语义的真正差异。

  • POST是更通用的方法,可用于目标资源上的任何操作
  • PUT更具体 - 它表示包含的文档旨在替代服务器上的表示。

假设我们在数据库中有一个Id = 1且name =“Pritam”的用户。现在,如果我尝试使用请求主体Id = 1和name =“Pritam”发出POST请求,那么会发生什么。 (重复记录)。将创建新记录或确切发生什么。

这些是实施细节;确切地说,REST API使客户端无需理解(就客户端而言,服务器只是一个网站)。

您域中的“正确”内容可能是:

  • 使用POST消息正文中的信息创建域模型中的新用户,并可能创建副本,或者
  • 由于冲突,向客户端报告错误
  • 报告成功,并参考以前创建的用户

这些事情都不是通过魔法发生的,你实际上必须选择对你的情况有意义的东西并实现它,然后找出正确的方法来描述HTTP响应体内发生的事情,以及要包含在元数据中的信息这样通用组件就可以智能地参与交换。

© www.soinside.com 2019 - 2024. All rights reserved.