Intereting Posts
Показать случайный DIV при каждой загрузке страницы (для модального модальности) как я могу преобразовать frm php в c # или json (extjs) Laravel – нетерпеливая загрузка метода (а не отношения) модели Eloquent Чтение определенной строки файла в PHP PHP upload_max_filesize Выбор правильной технологии / библиотеки для добавления указанного пользователем текста по пути в ранее определенных областях получать результат от команды shell_exec по мере запуска команды Как эхо-элемент ассоциативного массива в строке? PHP-Ajax и перенаправление .htaccess mod_rewrite> 500 Внутренняя ошибка сервера Как случайным образом извлекать изображения из моей базы данных mysql? Передайте возвращаемое значение из php в js Удаление повторяющихся значений в списке, разделенном запятыми, в PHP Регулярное выражение для содержимого внутри <td> и </ td> Как я могу предотвратить загрузку страницы, если нет javascript, но с использованием php вместо <noscript>?

Как мне получить доступ к данным PEST API PEST API на стороне сервера?

– Вопрос –

Я только начинаю с 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 (), которую я видел на другом сайте, играла в игру.

Так вот как все работает.

  1. Данные помещаются в нормальный массив.
  2. http_build_query () преобразует его в красивую почти GET-строку.
  3. file_get_contents () переносит его с клиента на сервер.
  4. parse_str () затем возвращает его обратно в массив.

Я вижу много сообщений об использовании PUT для отправки файлов. Я вижу, как это будет работать, но из того, что я прочитал во всем этом процессе REST, было то, что PUT должен обновлять данные, поскольку post – это создание данных. Может быть, я ошибаюсь. Я что-то упускаю?

    Из руководства PHP :

    Данные PUT поступают из stdin:

    $putdatafp = fopen("php://input", "r");

    Пример использования:

     $putfp = fopen('php://input', 'r'); $putdata = ''; while($data = fread($putfp, 1024)) $putdata .= $data; fclose($putfp); 

    У меня тот же сценарий, в котором нужно отправить данные на сервер PHP через API-интерфейс ReST с использованием метода PUT. Я попытался почти пару часов найти решение, но, наконец, нашел способ:

    В CUrl:

     $postData = http_build_query($data); curl_setopt($ch, CURLOPT_POSTFIELDS,$postData); 

    Мы должны проанализировать данные в переменной let say: $ putData, Here, это процедура Parse String:

     parse_str(file_get_contents("php://input"),$putData); 

    Затем напечатайте $putData , получите тот же массив, который вы публикуете в завитке.