介绍
我已阅读以下内容:
超文本传输协议 (HTTP) 是网络的生命。每次传输文档或发出 AJAX 请求时都会使用它。但令人惊讶的是,HTTP 在一些 Web 开发人员中相对未知。
HTTP 动词构成了我们“统一接口”约束的主要部分,并为我们提供了与基于名词的资源对应的动作。主要或最常用的 HTTP 动词(或正确称呼的方法)是 POST、GET、 PUT 和 DELETE 。
嗯?
好吧,我们到了我忘记了事情的地步。
PUT
和 DELETE
,他们说。 I’ve only ever heard of POST
and GET
and never saw something like $_PUT
or $_DELETE
passing by in any PHP code I’看过。
我的问题
这些方法 (PUT) 和 (DELETE) 的用途是什么,如果可以在 PHP 中使用它们,我将如何处理。
注意: 我知道这不是一个真正的问题,但如果我看到一个,我总是会抓住一个学习机会,如果可能的话,我非常想学习在 PHP 中使用这些方法。
原文由 user4446130 发布,翻译遵循 CC BY-SA 4.0 许可协议
有很多话要花在解释这一点上,我还不够熟练,但正如已经发布的那样,快速回顾一下 HTTP 规范 所描述的内容。
该协议基本上是这样说的:
当您需要 访问资源和检索数据 时使用 GET ,并且您不必修改或更改此数据的状态。
当您需要向服务器 发送一些数据 时使用 POST 。前任。从表单中将这些数据保存在某处。
当您需要 访问资源并仅从响应中检索标头 而不需要任何资源数据时,请使用 HEAD 。
当您需要 替换该系统上已存在的某些数据的状态 时,请使用 PUT 。
当您需要 删除该系统上的资源(相对于您发送的 URI)时,请使用 DELETE 。
当您需要从资源中获取通信选项时使用 OPTIONS ,以便 检查该资源的允许方法。前任。我们将它用于 CORS 请求和权限规则。
您可以阅读该文档中剩余的两种方法,抱歉我从未使用过。
基本上,协议是您应该在应用程序中使用以遵守它的一组规则。
从您的 php 应用程序中,您可以通过查看超级全局数组
$_SERVER
并检查字段REQUEST_METHOD
的值来检索使用的方法。因此,从您的 php 应用程序中,您现在可以识别这是 DELETE 还是 PUT 请求,例如。
$_SERVER['REQUEST_METHOD'] === 'DELETE'
或$_SERVER['REQUEST_METHOD'] === 'PUT'
。* 另请注意,某些处理不支持 PUT 或 DELETE 方法的浏览器的应用程序使用以下技巧,即 html 表单中的隐藏字段,其值属性中指定动词,例如:
遵循一个简单描述处理这 2 个 http 请求的可能方式的示例
当您(您的浏览器、您的客户端)向 HTTP 服务器请求资源时,您必须使用协议 (HTTP) 接受的方法之一。所以你的请求需要通过:
现在,虽然您可以使用各自的全局变量(
$_GET
,$_POST
)从 POST 和 GET 请求中获取数据,但在 PUT 和 DELETE 请求的情况下 PHP 不提供这些快速访问全局变量;但是您可以使用$_SERVER['REQUEST_METHOD']
的值来检查请求中的方法并相应地处理您的逻辑。所以 一个 PUT 请求看起来像:
您可以通过读取
php://input
流来访问 PHP 中的这些数据,例如。有类似的东西:DELETE 请求如下所示:
再次检查方法后,您可以构建逻辑:
请注意 DELETE 请求没有正文,并非常注意响应状态代码(例如,如果您收到 PUT 请求并且您已正确更新该资源,则应返回 204 状态 -No content-) 。