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

时间:2019-03-30 11:58:05

标签: rest post put

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

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

请帮助我了解PUT和POST方法之间的区别。何时在实时情况下使用PUT和何时使用POST。

1 个答案:

答案 0 :(得分:1)

  

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

那是不对的。 (这也不是您的错-误会很常见)。 POSTPUT的语义上的真正差异目前由RFC 7231描述。

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

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

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

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

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

所有这些事情都不是凭魔术发生的,实际上您必须选择对您的情况有意义的并实施它,然后找出正确的方法来描述HTTP响应主体中发生的事情以及包括哪些信息在元数据中,以便通用组件可以智能地参与交换。