2016-09-30 39 views

回答

3

我不认为创建/更新区别是决定PUT和POST之间的最佳方式。这由rest cook book备份:

HTTP方法POST和PUT不是CRUD创建和更新的HTTP等效项。

我建议您阅读那篇文章,但由于有些评论曾表示他们不明白,我会尝试以另一种方式解释。

  1. 问问自己,如果您在PUT或POST请求后直接向同一URL发出GET请求,会发生什么情况。如果你找回了你刚刚PUT或POST的相同数据,那么它可能应该是一个PUT请求。如果你必须去一个不同的URL来查看数据,那么它可能应该是一个POST(并且你可以使用响应中的Location标题告诉客户端可以通过GET请求查看POST数据的位置)。
  2. 幂等性比创建/更新或确实是否可以向同一个URL发出GET请求更重要。 PUT请求是幂等的(多次重复相同的请求与创建一次的效果相同)而POST请求不是(多次执行相同的请求与执行一次不同)。如果您的请求每次都有附加副作用,那么您必须使用POST。

这听起来像您的请求是幂等的,并且您知道资源将在前面生活的确切URL,所以我认为您应该使用PUT。

正如其余的烹饪书籍文章中所表达的,在资源创建和更新中使用PUT是完全正确的。

如果您可以使用PUT,那么您应该这样做,因为它可以为客户端提供有关该服务的更多信息。例如,对于PUT请求,容错,弹性和分配要容易得多,因为您不关心相同的请求是否多次发生。构建POST请求的容错应用程序可能会有点棘手,因为您必须确保请求只发生一次。执行重试逻辑也比PUT更容易,因为你不关心请求失败的地方,你可以重新尝试,因为幂等性。

对POST执行重试有点困难,因为客户端不确定请求是否成功,并且必须假定发出多个POST请求可能会造成损坏。

0

使用PUT api调用。 POST主要用于创建数据。

+0

但是,数据也可以创建,或者是“确定”使用PUT来创建和更新吗? – user2636197

+0

如果是这种情况,那么你可以使用POST。 –

相关问题