我正在为CodeIgniter开发我的REST客户端库,我正在努力研究如何在PHP中发送PUT和DELETE参数.
在一些地方我见过人们使用这些选项:
$this->option(CURLOPT_PUT, TRUE);
$this->option(CURLOPT_POSTFIELDS, $params);
Run Code Online (Sandbox Code Playgroud)
令人讨厌的是,这似乎什么都不做.这是设置PUT参数的正确方法吗?
如果是这样,我该如何设置DELETE参数?
$ this-> option()是我库的一部分,它只是构建一个CURLOPT_XX常量数组,并在执行构建的cURL请求时将它们发送到curl_setopt_array().
我试图使用以下代码读取PUT和DELETE参数:
case 'put':
// Set up out PUT variables
parse_str(file_get_contents('php://input'), $this->_put_args);
break;
case 'delete':
// Set up out PUT variables
parse_str(file_get_contents('php://input'), $this->_delete_args);
break;
Run Code Online (Sandbox Code Playgroud)
这里有两个选项,我以错误的方式接近这个或者我的库中有一个错误.如果你能告诉我这是否理论上可行,我可以直接调试,直到我解决它.
我不想再浪费时间在一个根本错误的方法上.
我正在引用DigitalOcean的API文档,他们在此提供了有关如何删除Droplet的以下示例:
curl -X DELETE -H "Content-Type: application/json" -H "Authorization: Bearer API_TOKEN" "https://api.digitalocean.com/v2/droplets/[DROPLET_ID]"
Run Code Online (Sandbox Code Playgroud)
我怎么能用PHP卷曲写这个?
我目前有这个:
$ch = curl_init('https://api.digitalocean.com/v2/droplets/18160706');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer MY_API_TOKEN')
);
$result = curl_exec($ch);
echo $result;
Run Code Online (Sandbox Code Playgroud)
但这不是删除我的Droplet并返回(是的,Droplet id是正确的):
{"id":"not_found","message":"The resource you were accessing could not be found."}1
Run Code Online (Sandbox Code Playgroud)