Я работаю над своей клиентской библиотекой REST для CodeIgniter, и я изо всех сил пытаюсь разработать, как отправить ПОМЕЩЕННЫЙ и УДАЛИТЬ аргументы в PHP.
В нескольких местах я видел, что люди используют опции:
$this->option(CURLOPT_PUT, TRUE);
$this->option(CURLOPT_POSTFIELDS, $params);
Раздражающе, это, кажется, ничего не делает. Действительно ли это - корректный способ установить ПОМЕЩЕННЫЕ параметры?
Если так, как делают я установил, УДАЛЯЮТ параметры?
$this-> опция () является частью моей библиотеки, это просто создает массив констант CURLOPT_XX и отправляет их в curl_setopt_array (), когда созданный ВИХРЕВОЙ запрос выполняется.
Я пытаюсь считать ПОМЕЩЕННЫЙ и УДАЛИТЬ параметры с помощью следующего кода:
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;
Существует две опции здесь, я приближаюсь к этому неправильным способом или существует ошибка где-нибудь в моих библиотеках. Если Вы могли бы сообщить мне, должно ли это теоретически работать, я могу просто усердно работать на отладке, пока я не решаю ее.
Я не хочу тратить впустую больше время на подход, который является существенно неправильным.
Вместо CURLOPT_PUT = TRUE
используйте CURLOPT_CUSTOMREQUEST = 'PUT'
.
и CURLOPT_CUSTOMREQUEST = 'DELETE'
, затем просто установите значения с помощью CURLOPT_POSTFIELDS
.
Просто помните, что большинство веб-серверов не обрабатывают запросы на поставку и удаление. Так как вы делаете библиотеку, я бы предложил думать о учете этого. Как правило, есть две конвенции, которые вы можете использовать для Mimic Put & Delete через Post.
Вообще говоря, самые спокойные услуги, которые не Разрешить PUT & Delete напрямую поддержит хотя бы одну из этих стратегий. Вы можете использовать CURL, чтобы установить пользовательский заголовок, если вам нужно через параметр Curleopt_httpheader
.
// ex...
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-HTTP-Method-Override: PUT') );
Я думаю, что вы смешиваете свои глаголы - поставить для положения файла, пост предназначен для публикации переменных (хотя вы можете опубликовать файл).
Чтобы установить переменные пост, используйте Curlopt_PostFields
с ни одной строкой param1 = val1 & param2 = val2
или ассоциативный массив.
Чтобы сделать удаление, вы захотите использовать вариант Curl Curlopt_Customrequest