- Вопрос -
Я только начинаю с 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. Это взяло мои данные из массива в дружественную строку.
Затем мне пришлось добавить.
parse_str(file_get_contents('php://input'), $put);
Теперь я могу делать такие вещи, как $put ['data'].
Ответ PaulPRO, приведенный выше, действительно работает, чтобы получить данные так же, как и file_get_contents() с меньшим количеством строк. Мы застряли, пытаясь понять, как анализировать данные, в которых моя нехватка http_build_query(), которую я видел на другом сайте, играла в игру.
Так вот как все это работает.
- Данные помещаются в нормальный массив.
- http_build_query() преобразует его в красивую почти GET-строку.
- file_get_contents() переносит его с клиента на сервер.
- parse_str() затем возвращает его обратно в массив.
Я вижу много сообщений об использовании PUT для отправки файлов. Я вижу, как это будет работать, но из того, что я прочитал во всем этом процессе REST, было то, что PUT должен обновлять данные, поскольку post - это создание данных. Может быть, я ошибаюсь. Я что-то пропустил?