Rest 我应该使用POST或PUT来调用可以创建或更新的API吗

Rest 我应该使用POST或PUT来调用可以创建或更新的API吗,rest,laravel,restful-url,Rest,Laravel,Restful Url,我不知道是否应该使用POST或PUT进行API调用 后端将在my DB中创建或更新现有行。我知道我使用POST创建和PUT更新,但当我不知道哪一个将被切换到创建/更新时,我应该使用什么呢?使用PUTapi调用。 POST主要用于创建数据。使用PUTapi调用。 POST通常在创建数据时使用。如果您不知道使用什么,请使用POST。如果您不太确定,请参考以下内容:如果您不知道使用什么,请使用POST。如果您不太确定,请参考以下内容:我不认为创建/更新的区别是决定PUT和POST的最佳方式。这一点得到

我不知道是否应该使用POST或PUT进行API调用


后端将在my DB中创建或更新现有行。我知道我使用POST创建和PUT更新,但当我不知道哪一个将被切换到创建/更新时,我应该使用什么呢?

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

使用PUTapi调用。
POST通常在创建数据时使用。

如果您不知道使用什么,请使用POST。如果您不太确定,请参考以下内容:

如果您不知道使用什么,请使用POST。如果您不太确定,请参考以下内容:

我不认为创建/更新的区别是决定PUT和POST的最佳方式。这一点得到以下方面的支持:

HTTP方法POST和PUT与CRUD的create和update不同

我建议你读一下那篇文章,但由于一些评论说他们不明白,我将尝试用另一种方式解释

  • 问问自己,如果在PUT或POST请求之后直接向同一URL发出GET请求,会发生什么情况。如果您返回的数据与刚才放置或发布的数据相同,那么它可能是一个放置请求。如果您必须转到其他URL才能查看数据,那么它可能应该是一个POST(并且您可以在响应中使用Location标头来告诉客户机在哪里可以通过GET请求查看发布的数据)
  • 幂等性比创建/更新或是否可以对同一URL发出GET请求更重要。PUT请求是幂等的(多次重复同一请求与发出一次请求的效果相同),而POST请求不是幂等的(多次发出同一请求与发出一次请求不同)。如果您的请求每次都有额外的副作用,那么您必须使用POST
  • 听起来您的请求是幂等的,并且您知道资源将位于前端的确切URL,因此我认为您可能应该使用PUT

    正如Rest cook book文章中所述,将PUT用于资源创建和更新完全没有问题

    如果您可以使用PUT,那么您应该这样做,因为它为客户提供了有关服务的更多信息。例如,PUT请求的容错性、弹性和分发更容易,因为您不在乎同一请求是否多次发生。构建发出POST请求的容错应用程序可能有点棘手,因为您必须确保请求只发生一次。实现重试逻辑也更容易,因为你不在乎请求在哪里失败,你可以因为幂等性而重试


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

    我不认为创建/更新的区别是决定PUT和POST的最佳方法。这一点得到以下方面的支持:

    HTTP方法POST和PUT与CRUD的create和update不同

    我建议你读一下那篇文章,但由于一些评论说他们不明白,我将尝试用另一种方式解释

  • 问问自己,如果在PUT或POST请求之后直接向同一URL发出GET请求,会发生什么情况。如果您返回的数据与刚才放置或发布的数据相同,那么它可能是一个放置请求。如果您必须转到其他URL才能查看数据,那么它可能应该是一个POST(并且您可以在响应中使用Location标头来告诉客户机在哪里可以通过GET请求查看发布的数据)
  • 幂等性比创建/更新或是否可以对同一URL发出GET请求更重要。PUT请求是幂等的(多次重复同一请求与发出一次请求的效果相同),而POST请求不是幂等的(多次发出同一请求与发出一次请求不同)。如果您的请求每次都有额外的副作用,那么您必须使用POST
  • 听起来您的请求是幂等的,并且您知道资源将位于前端的确切URL,因此我认为您可能应该使用PUT

    正如Rest cook book文章中所述,将PUT用于资源创建和更新完全没有问题

    如果您可以使用PUT,那么您应该这样做,因为它为客户提供了有关服务的更多信息。例如,PUT请求的容错性、弹性和分发更容易,因为您不在乎同一请求是否多次发生。构建发出POST请求的容错应用程序可能有点棘手,因为您必须确保请求只发生一次。实现重试逻辑也更容易,因为你不在乎请求在哪里失败,你可以因为幂等性而重试


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

    但是也可以创建数据,或者是“ok”在创建和更新时都使用PUT?如果是这样,那么您可以使用POST。但是也可以创建数据,或者在创建和更新时都使用PUT“确定”吗?如果是这样,那么您可以使用POST。