我正在使用REST API,除其他外,它使用这样的DELETE方法:
DELETE /resources/whatever/items/123
Run Code Online (Sandbox Code Playgroud)
要使用PHP访问它,我使用这样的cURL:
self::$curl = curl_init();
curl_setopt_array(self::$curl, array(
CURLOPT_AUTOREFERER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
));
Run Code Online (Sandbox Code Playgroud)
如您所见,我的cURL实例是静态的,将在后续调用中重用.在"内置"请求方法之间切换时,这可以正常工作.例如,在我的get()方法中,我做这样的事情:
curl_setopt_array(self::$curl, array(
CURLOPT_HTTPGET => true,
CURLOPT_URL => self::BASE . 'whatever',
));
Run Code Online (Sandbox Code Playgroud)
然后跑curl_exec().通过明确设置请求方法via CURLOPT_HTTPGET,CURLOPT_POST将清除可能的先前.
但是,设置CURLOPT_CUSTOMREQUEST(例如DELETE)将覆盖任何其他内置请求方法.只要我想做的DELETE事情curl_setopt(self::$curl, CURLOPT_HTTPGET, true)就没问题,但是举例来说,不会重置自定义方法; DELETE仍然会被使用.
我曾尝试设置CURLOPT_CUSTOMREQUEST到null,false或空字符串,但这只会导致像一个HTTP请求
/resources/whatever/items/123
Run Code Online (Sandbox Code Playgroud)
即使用空字符串作为方法,后跟空格,后跟路径.
我知道我可以设置CURLOPT_CUSTOMREQUEST以GET代替并做GET没有任何问题的请求,但我不知道是否有重新成为了可能CURLOPT_CUSTOMREQUEST.