【问题标题】:Why use PUT when POST is doing the same? Specifically in Laravel为什么在 POST 执行相同操作时使用 PUT?特别是在 Laravel
【发布时间】:2019-07-17 12:44:41
【问题描述】:

嗯,我知道 HTTP 方法的独立性。我也知道 PUT 和 POST 在 REST API 中的具体用途。但问题是为什么在 POST 执行相同操作时使用 PUT。

以 Laravel(PHP 框架)为例,在 Laravel 中,我们伪造 POST 以用作 PUT 方法来更新数据,例如更改项目名称。问题是我们可以执行相同的操作,即使用 POST 方法更新项目名称而不将其伪装为 PUT 那么为什么要使用 PUT?

【问题讨论】:

标签: rest api post put


【解决方案1】:

http调用PUT /products/{id}是幂等的,即:每次后续相同的调用进行相同的修改,可以多次调用,结果相同。

http 调用POST /products 是NOT 幂等,也就是说,每个后续相同的调用都应该创建产品资源的新子代。

PUT 用于更新现有资源,POST 用于创建新资源。

请注意,如果你想兼容 REST(就像 Laravel 尝试做的那样),你应该使 GET、PUT、DELETE、HEAD、OPTIONS 和 TRACE HTTP 方法,但不是 POST 方法。

Laravel 允许您使用 _method 参数在 HTML 表单中伪造 PUT 方法调用,因为您无法使用浏览器发出 PUT 请求。 但是,为了遵循 REST 原则,Laravel 能够响应伪造的 PUT 调用(来自浏览器),也可以响应来自具有相同路由的其他程序的真实 PUT 方法。

【讨论】:

  • 请大家参考,如果觉得正确,请采纳。
猜你喜欢
  • 2023-03-21
  • 2015-02-13
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
相关资源
最近更新 更多