如果我尝试使用数据库中的现有记录发布一个 POST 请求,会发生什么情况



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

现在我的问题是: 假设我们在数据库中有一个 Id = 1 且名称 = "Pritam" 的用户。 现在,如果我尝试发出请求正文 ID = 1 且名称 = "Pritam"的 POST 请求,那么会发生什么。(重复记录)。是否会创建新记录或究竟会发生什么。

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

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

这是不对的。 (这也不是你的错——这种误解很常见)。 POST 和 PUT 语义的真正差异目前由 RFC 7231 描述

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

假设我们在数据库中有一个 Id = 1 且名称 = "Pritam" 的用户。现在,如果我尝试发出请求正文 ID = 1 且名称 = "Pritam"的 POST 请求,那么会发生什么。(重复记录)。是否会创建新记录或究竟会发生什么。

这些是实现细节;正是REST API使客户端不需要理解的东西(就客户端而言,服务器只是一个网站)。

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

  • 使用 POST 邮件正文中的信息在域模型中创建新用户,并可能创建重复用户,或者
  • 由于冲突,向客户端报告错误
  • 根据先前创建的用户向客户端报告成功

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

最新更新