2015-07-06 4 views
1

Я создаю API с Apigility. Я привязан к бэкэнд, где для удаления ресурса требуются дополнительные данные, а не только идентификатор ресурса, взятый из URL-адреса. Поэтому мне нужно прочитать параметр fom для тела запроса DELETE.В Apigility, как получить доступ к содержимому тела запроса DELETE

В методе create() запроса POST я могу просто получить доступ к параметру $ data, это не работает с методами DELETE, поскольку предоставляется только $id.

Доступ к $this->getEvent()->getRequest(); в моих классах ресурсов. Метод delete(). Я вижу содержимое тела запроса (данные формы), завернутое в свойство, называемое «content», в виде строки.

Может кто-нибудь указать мне на то, что мне не хватает, чтобы получить доступ к парам ключ-значение тела?

ответ

1

Apigility не ожидает, что данные будут переданы в запрос DELETE, поэтому он не передает его параметрам события. Вы можете просто извлечь его из запроса, как вы обнаружили, и сделать сам json_decode.

public function delete($id) 
{ 
    $body = $this->getEvent()->getRequest()->getContent(); 
    $data = json_decode($body, true); 
} 
+0

Благодарим за ответ. К сожалению, '$ body' недействителен JSON, но строка вроде следующего:' var_dump() 'ed: ' string '------ WebKitFormBoundaryltcFOyHq6kVAGS1X Content-Disposition: form-data; имя = "device_type" андроида ------ WebKitFormBoundaryltcFOyHq6kVAGS1X-- '(длина = 149) ' Я использую Почтальон отправить запрос DELETE, используя свои поля форм-данных. – hennzen

+1

Проблема решена: решение было в Postman для установки заголовка 'Content_type: application/json' и отправки запроса с необработанным телом, содержащим строку JSON, например. '{" device_type ":" android "}'. Таким образом, вышеупомянутое решение работает отлично. Благодаря! – hennzen

+0

Увы, вы не можете поддержать ответ из-за недостатка репутации. – hennzen

Смежные вопросы