您好,欢迎访问一九零五行业门户网

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

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貌似取不到参数
以上,谢谢大家的帮助,结贴了
其它类似信息

推荐信息