这些方法(PUT)和(DELETE)有什么用?
有很多话要花来解释这一点,我没有足够的技能来做到这一点,但是正如已经发布的那样,快速回顾一下HTTP规范所描述的内容。
协议基本上是这样说的:
-
当您需要访问资源和检索数据,并且不必修改或更改此数据的状态时,请使用 GET。
-
当您需要向服务器发送一些数据时,请使用 POST。例如,从表单中将这些数据保存在某个地方。
-
当您需要访问资源并从响应中仅检索标头时,请使用 HEAD,而无需任何资源数据。
-
当您需要替换该系统上已存在的某些数据的状态时,请使用 PUT。
-
当您需要删除该系统上的资源(相对于已发送的 URI)时,请使用 DELETE。
-
当您需要从资源中获取通信选项时,请使用 OPTIONS,以便检查该资源的允许方法。例如,我们将其用于 CORS 请求和权限规则。
-
您可以在该文档上阅读其余两种方法,很抱歉我从未使用过它。
基本上,协议是您应该从应用程序中使用的一组规则来遵守它。
...如果可以在PHP中使用它们,我该怎么做。
从您的php应用程序中,您可以通过查看超级全局数组$_SERVER
来检索使用的方法,并检查字段REQUEST_METHOD
的值。
因此,从您的php应用程序中,您现在可以识别这是DELETE还是PUT请求,例如。 或。$_SERVER['REQUEST_METHOD'] === 'DELETE'
$_SERVER['REQUEST_METHOD'] === 'PUT'
* 另请注意,某些处理不支持 PUT 或 DELETE 方法的浏览器的应用程序使用以下技巧,即 html 表单中的隐藏字段,其值属性中指定的谓词,例如:
<input name="_method" type="hidden" value="delete" />
按照一个示例进行简短描述,了解处理这 2 个 http 请求的可能方法
当您(您的浏览器,您的客户端)向HTTP服务器请求资源时,您必须使用协议(HTTP)接受的方法之一。因此,您的请求需要通过:
- 一种方法
- 资源的 URI
- 请求标头,如用户代理、主机、内容长度等
- (请求的可选正文)
现在,虽然您将能够使用各自的全局变量(,)从POST和GET请求中获取数据,但在PUT和DELETE请求的情况下,PHP不提供这些快速访问全局变量;但是,您可以使用 的值来检查请求中的方法,并相应地处理您的逻辑。$_GET
$_POST
$_SERVER['REQUEST_METHOD']
因此,PUT 请求将如下所示:
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
}
和 DELETE 请求将如下所示:
DELETE /something/index.php?maybe=aparameter
同样,您可以在检查方法后构建逻辑:
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
// do something
}
请注意,DELETE 请求没有正文,并且还要特别注意响应状态代码(例如,如果您收到 PUT 请求并且已更新该资源且未出现错误,则应返回 204 状态 - 无内容-))。