Home >Backend Development >PHP Tutorial >100分求助:PHP如何获取PUT和DELETE请求的参数

100分求助:PHP如何获取PUT和DELETE请求的参数

WBOY
WBOYOriginal
2016-06-23 14:23:321925browse

PHP RESTful

Hi,大家好,我在尝试用PHP实现RESTful API接口,现在遇到了一个问题:

当请求类型是POST或GET的时候,PHP可以很容易地通过$_POST、$_GET和$_REQUEST来获取客户端输入的参数;但是当请求类型是PUT或DELETE时,我不知道PHP应该使用哪种方法来获取参数。

大家有没有遇到过类似的问题?请不吝赐教~

回复讨论(解决方案)

最笨的方法:$method = $_SERVER['REQUEST_METHOD']
然后判断

最笨的方法:$method = $_SERVER['REQUEST_METHOD']
然后判断
感谢回复,想继续请教下,比如说有如下场景:

使用jQuery发送一个PUT请求,
$.ajax({
    type: "PUT",
    url: "some.php",
    data: { name: "Riki", location: "China" },
    success:function(returnVal){
         //do something here.
    }
});

data里的参数我如何在PHP里获取呢? 谢谢!

put和delete,你用$_GET获取看看

为什么非要把PUT指定为类型呢,不能指定为行为吗?

同意楼上。

原则上,GET/POST是决定支持的,对其它谓词的支持要看服务器。一般也都会以GET/POST去模拟。

本帖最后由 xuzuning 于 2013-10-08 11:52:45 编辑

some.php
$type = $_SERVER['REQUEST_METHOD'];parse_str(file_get_contents('php://input'), $data);$data = array_merge($_GET, $_POST, $data);//根据 $type 的值做相应的操作

感谢大家的回复,我现在开发环境的机器挂了,回头好了我去测试一下,Thanks!

To 4楼和5楼的朋友:
        原则上GET和POST确实能满足要求,但是目前我比较想实现更高的RESTful架构的成熟度,对于一个URI,比如http://myapi/order,代表了订单资源,对于这个资源的增删改查操作,都由这个URI来实现,当服务端收到用户的Request请求时,根据这次请求的类型来决定如何进行处理,GET对应Read,POST对应Create,PUT对应Update,DELETE对应Delete操作。
        只用GET和POST当然也能模拟,我们可能会将URI变成这样:http://myapi/order/update或者http://myapi/order/delete,将行为定义到URI中。当然,将行为定义到指定的参数中按说也可以。

6楼朋友的方法可以取到PUT过来的参数:

parse_str(file_get_contents('php://input'), $data)


$_GET貌似取不到参数

以上,谢谢大家的帮助,结贴了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn