56 php http http-put http-delete http-options-method
我读过以下内容:
超文本传输协议(HTTP)是网络的生命.每次传输文档或发出AJAX请求时都会使用它.但是,令人惊讶的是,在某些Web开发人员中,HTTP相对未知.
HTTP谓词构成了我们"统一接口"约束的主要部分,并为我们提供了与基于名词的资源相对应的动作.主要或最常用的HTTP谓词(或方法,因为它们被正确调用)是POST,GET,PUT和DELETE.
好吧,我们突然忘记了事情.
PUT并且DELETE,他们说.我只听说过POST和GET,从来没有见过类似的东西$_PUT或者$_DELETE在我曾经看到任何PHP代码经过.
这些方法(PUT)和(DELETE)是什么,如果可以在PHP中使用它们,我将如何解决这个问题.
注意:我知道这不是一个真正的问题但我总是抓住一个学习机会,如果我看到一个,并且非常想学习在PHP中使用这些方法,如果可能的话.
ilp*_*jin 48
什么是这些方法(PUT)和(DELETE)...
有很多词要用来解释这个,而且我不够熟练,但是已经发布了,快速回顾一下HTTP规范描述的内容.
该协议基本上说:
当您需要访问资源并检索数据时使用GET,而您不必修改或更改此数据的状态.
需要将一些数据发送到服务器时使用POST.防爆.从表单中将这些数据保存到某处.
当您需要访问资源并从响应中仅检索Headers而不使用任何资源数据时,请使用HEAD.
当您需要替换该系统上已存在的某些数据的状态时,请使用PUT.
当您需要删除该系统上的资源(相对于您发送的URI)时,请使用DELETE.
当您需要从资源获取通信选项时使用OPTIONS,以便检查该资源的允许方法.防爆.我们将它用于CORS请求和权限规则.
基本上,协议是一组规则,您应该从应用程序中使用它来遵守它.
...如果可以在PHP中使用它们,我将如何解决这个问题.
从您的应用程序中,您应该检索使用哪种方法$_SERVER['REQUEST_METHOD']并做出反应.
一些处理不支持PUT或DELETE方法的浏览器的应用程序使用这个技巧,一个来自html的隐藏字段,其值为ex.:
<input name="_method" type="hidden" value="delete" />
Run Code Online (Sandbox Code Playgroud)
因此,从应用程序中,您现在可以将其识别为DELETE请求.
当您(您的浏览器,您的客户端)向HTTP服务器请求资源时,您必须使用协议(HTTP)接受的方法之一.所以你需要通过:
所以请求应该如下所示:
GET /something/index.php?maybe=aparameter
Run Code Online (Sandbox Code Playgroud)
现在,在您的应用程序中,PHP从此GET请求中获取参数并将它们插入到超全局(可访问的应用程序中)数组中.所以你可以访问$_GET['maybe']它返回'aparameter`.
在POST请求的情况下,您以类似的方式向HTTP服务器请求资源但具有重要区别.您在请求正文中提供数据:
POST /something/index.php
(body) maybe=aparameter
Run Code Online (Sandbox Code Playgroud)
现在,在您的应用程序中,来自此POST请求的PHP获取参数并将它们插入到超全局(可访问的应用程序中)数组中.所以你可以访问$_POST['maybe']它返回'aparameter`.
请特别注意响应状态代码(例如,如果您收到了PUT请求并且您已经更新了该资源而没有错误,则应该返回204状态 - 无内容 - ).
And*_*eyP 31
从PHP使用PUT数据的方法:
$method = $_SERVER['REQUEST_METHOD'];
if ('PUT' === $method) {
parse_str(file_get_contents('php://input'), $_PUT);
var_dump($_PUT); //$_PUT contains put fields
}
Run Code Online (Sandbox Code Playgroud)
Cod*_*ter 14
PHP的$_GET和$_POST不善命名.$_GET用于访问查询字符串参数的值,并$_POST允许您访问请求正文.
使用查询字符串参数不仅限于GET请求,除了POST之外的其他类型的请求可以随请求体一起提供.
如果要查找用于请求页面的动词,请使用$_SERVER['REQUEST_METHOD'].
Ash*_*thi 10
最适合使用这些(PUT和DELETE)方法的地方是REST API.我们使用http方法来定义操作模式,例如,您想要获取任何资源,然后您可以使用以下内容:
GET http://api.example.com/employee/<any_id>
Run Code Online (Sandbox Code Playgroud)
添加新项目:
POST http://api.example.com/employee/
Run Code Online (Sandbox Code Playgroud)
更新或编辑:
PUT http://api.example.com/employee/
Run Code Online (Sandbox Code Playgroud)
删除现有资源:
DELETE http://api.example.com/employee/1
Run Code Online (Sandbox Code Playgroud)
等等
现在,PHP您只需要阅读HTTP使用的方法,以便您可以根据该方法进行操作.
有很多库可以为您做到这一点.这个是一个非常好的例子:http://phphttpclient.com/
这些方法是什么(PUT)和(DELETE)
简而言之,有些简化,PUT是将文件上传到URL,DELETE用于从URL中删除文件.
从来没有看到像我曾经看过的任何PHP代码
$_PUT或类似的东西$_DELETE
$_POST并且$_GET非常名为superglobals.$_POST用于从请求正文解析的数据.$_GET用于从URL解析的数据.没有什么可以将这些地方(特别是URL)中的数据严格地绑定到特定的请求方法.
DELETE请求只关心URL的路径,因此没有要解析的数据.
PUT请求通常关心您将访问的整个请求主体(不是它的解析版本)file_get_contents('php://input');.
因为如果可以在PHP中使用它们,我将如何解决这个问题.
您需要将URL映射到PHP脚本(例如,使用URL重写),测试请求方法,计算出您实际处理的URL,然后编写代码以执行相应的操作.
| 归档时间: |
|
| 查看次数: |
55368 次 |
| 最近记录: |