Этот ответ - лучший способ, который мне нравится.
рос -
Я только начинаю работать с REST API и очень запутался.
Вот как выглядит моя клиентская часть PHP cRUL для PUT.
case 'PUT':
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
break;
Теперь, когда я смотрю на сервер, мой $ _SERVER ['REQUEST_METHOD'] показывает PUT, но мой вопрос заключается в том, как мне получить $ data, которые я отправил с CURLOPT_POSTFIELDS.
Все, что мне нужно сделать, это получить $ data, отправленные с запросом PUT, в следующую строку. подобно
$value = $data['curl_data'];
Я видел столько беспорядка на эту тему, что у меня болит голова. Это кажется таким простым на стороне клиента php, но ни у кого нет ответов, которые работают на стороне сервера php.
Спасибо за любую помощь!
- Ответ (после помощи и домашней работы) -
Я новичок, поэтому я не могу ответить на свой вопрос, пока через 8 часов ... странно :)
Хорошо, после работы с великими людьми здесь я должен сказать, что мы столкнулись с ответом. Я пинаю себя за то, что это так легко, и в то же время это сбивает с толку.
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
Первое изменение (выше) мне пришлось добавить http_build_query () около $ data. Это перенесло мои данные из массива в строку, дружественную к URL.
Далее я должен был добавить.
parse_str(file_get_contents('php://input'), $put);
Теперь я могу делать такие вещи, как $ put ['data'].
Ответ, который PaulPRO дал выше, работает для получения данных так же, как file_get_contents () с меньшим количеством строк. Мы застряли, пытаясь понять, как анализировать данные, и это вызвало у меня недостаток http_build_query (), который я видел на другом сайте.
Так вот как это все работает.
Данные помещаются в нормальный, Rray.http_build_query () преобразует его в красивую, почти GET-подобную строку.file_get_contents () переносит его с клиента на сервер.Затем parse_str () превращает его обратно в массив.Я вижу много сообщений об использовании PUT для отправки файлов. Я могу видеть, как это будет работать, но из того, что я прочитал во всем этом процессе REST, было то, что PUT должен обновлять данные, как пост должен создавать данные. Возможно я ошибаюсь. Я что-то пропустил?