这些方法 (PUT) 和 (DELETE) 用于...
有很多话要花在解释这一点上,我还不够熟练,但正如已经发布的那样,快速回顾一下HTTP specification 所描述的内容。
协议基本上是这样说的:
-
当您需要访问资源和检索数据时使用 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
- 请求标头,例如 User-Agent、Host、Content-Length 等
- (请求的可选正文)
现在,虽然您可以使用各自的全局变量($_GET、$_POST)从 POST 和 GET 请求中获取数据,但对于 PUT 和 DELETE 请求,PHP 不提供这些快速访问全局变量;但是您可以使用$_SERVER['REQUEST_METHOD'] 的值来检查请求中的方法并相应地处理您的逻辑。
所以 PUT 请求如下所示:
PUT /something/index.php
(body) maybe=aparameter
您可以通过读取php://input 流在PHP 中访问这些数据,例如。类似于:
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 状态 -没有内容-).