这些方法(PUT)和(DELETE)是什么......
有很多话要花很多钱来解释这一点,而且我还不够熟练,但正如已经发布的那样,快速回顾一下HTTP规范 https://www.rfc-editor.org/rfc/rfc7231#section-4描述。
该协议基本上是这样说的:
-
use GET当你需要的时候访问资源并检索数据,并且您不必修改或更改此数据的状态。
-
use POST当你需要的时候发送一些数据到服务器。前任。从表单中将这些数据保存在某处。
-
use HEAD当你需要的时候访问资源并仅从响应中检索标头,没有任何资源数据。
-
use PUT当你需要的时候替换一些已经存在的数据的状态在那个系统上。
-
use DELETE当你需要的时候删除资源(相对于您发送的 URI)在该系统上。
-
use OPTIONS当您需要从资源获取通信选项时,因此对于检查该资源允许的方法。前任。我们将其用于 CORS 请求和权限规则。
-
您可以阅读该文档中的其余两种方法,抱歉我从未使用过它。
基本上,协议是一组您应该在应用程序中使用的规则来遵守它。
...如果可以的话
在 PHP 中使用它们,我将如何解决这个问题。
从您的 php 应用程序中,您可以通过查看超级全局数组来检索使用了哪种方法$_SERVER
并检查该字段的值REQUEST_METHOD
.
因此,从您的 php 应用程序中,您现在可以识别这是 DELETE 还是 PUT 请求,例如。$_SERVER['REQUEST_METHOD'] === 'DELETE'
or $_SERVER['REQUEST_METHOD'] === 'PUT'
.
* 另请注意,某些处理不支持 PUT 或 DELETE 方法的浏览器的应用程序使用以下技巧,即 html 表单中的隐藏字段,并在其 value 属性中指定动词,例如:
<input name="_method" type="hidden" value="delete" />
遵循一个带有简短描述的示例,了解处理这 2 个 http 请求的可能方法
当您(您的浏览器、您的客户端)向 HTTP 服务器请求资源时,您必须使用协议 (HTTP) 接受的方法之一。所以你的请求需要通过:
- A METHOD
- 资源的 Uri
- 请求标头,如 User-Agent、Host、Content-Length 等
- (请求正文可选)
现在,虽然您可以使用各自的全局变量从 POST 和 GET 请求获取数据($_GET
, $_POST
),在 PUT 和 DELETE 请求的情况下,PHP 不提供这些快速访问全局变量;但你可以使用的值$_SERVER['REQUEST_METHOD']
检查请求中的方法并相应地处理您的逻辑。
SoPUT 请求如下所示:
PUT /something/index.php
(body) maybe=aparameter
您可以通过阅读 PHP 中的php://input
溪流,例如类似的东西:
if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
$myEntireBody = file_get_contents('php://input'); //Be aware that the stream can only be read once
}
andDELETE 请求如下所示:
DELETE /something/index.php?maybe=aparameter
检查方法后,您可以再次构建逻辑:
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
// do something
}
请注意 DELETE 请求没有正文,并且还要非常注意响应状态代码(例如,如果您收到 PUT 请求并且您已更新该资源且没有错误,则应返回 204 状态 - 无内容 -).