I’m using a REST API which, among other things, uses the DELETE
method like this:
DELETE /resources/whatever/items/123
To access this using PHP I’m using cURL like this:
self::$curl = curl_init();
curl_setopt_array(self::$curl, array(
CURLOPT_AUTOREFERER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
));
As you can see, my cURL instance is static and will be reused for subsequent calls. This works fine when switching between “builtin” request methods. For example, in my get()
method, I do something like this:
curl_setopt_array(self::$curl, array(
CURLOPT_HTTPGET => true,
CURLOPT_URL => self::BASE . 'whatever',
));
and then run curl_exec()
. By explicitly setting the request method via CURLOPT_HTTPGET
, a possible previous CURLOPT_POST
will be cleared.
However, setting CURLOPT_CUSTOMREQUEST
(for example to DELETE
) will override any other builtin request method. That’s fine as long as I want to DELETE
things, but calling for example curl_setopt(self::$curl, CURLOPT_HTTPGET, true)
will not reset the custom method; DELETE
will still be used.
I have tried setting CURLOPT_CUSTOMREQUEST
to null
, false
or the empty string, but this will only result in a HTTP request like
/resources/whatever/items/123
i.e. with the empty string as method, followed by a space, followed by the path.
I know that I could set CURLOPT_CUSTOMREQUEST
to GET
instead and do GET requests without any problems, but I wonder whether there is a possiblity to reset CURLOPT_CUSTOMREQUEST
.