Я использую REST API, который, помимо прочего, использует метод DELETE
, подобный следующему:
DELETE /resources/whatever/items/123
Чтобы получить доступ к этому с помощью PHP, я использую cURL, например:
self::$curl = curl_init();
curl_setopt_array(self::$curl, array(
CURLOPT_AUTOREFERER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
));
Как видите, мой экземпляр cURL является статическим и будет повторно использоваться для последующих вызовов. Это прекрасно работает при переключении между «встроенными» методами запроса. Например, в моем методе get()
я делаю что-то вроде этого:
curl_setopt_array(self::$curl, array(
CURLOPT_HTTPGET => true,
CURLOPT_URL => self::BASE . 'whatever',
));
, а затем запустить curl_exec()
. При явной установке метода запроса через 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
т.е. с пустой строкой в качестве метода, с пробелом и путем.
Я знаю, что мог бы вместо CURLOPT_CUSTOMREQUEST
установить GET
и выполнять GET-запросы без каких-либо проблем, но мне интересно, есть ли возможность сброса CURLOPT_CUSTOMREQUEST
.