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

- Вопрос -

Я только начинаю работать с 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 часов ... odd:)

Хорошо, после работы с замечательными людьми здесь я должен сказать, что мы нашли ответ. Я ругаю себя за то, что это было так просто, но в то же время сбивало с толку.

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 предназначен для обновления данных, так как публикация предназначена для создания данных. Может я ошибаюсь. Я что-то упустил?

16
задан Martin 5 September 2017 в 22:12
поделиться