Доступ к телу JSON запроса POST в контроллере Symfony 2.3 - PullRequest
0 голосов
/ 07 июня 2019

Последние 3 часа я провел, пытаясь проанализировать тело JSON входящего запроса POST для конечной точки API, которую я построил в Symfony 2.3.3.

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

Опубликовать запрос:

app_1    | Accept:          application/json
app_1    | Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3
app_1    | Connection:      close
app_1    | Content-Length:  19
app_1    | Content-Type:    application/json
app_1    | Host:            localhost
app_1    | User-Agent:      Faraday v0.15.4
app_1    | X-Php-Ob-Level:  1
app_1    |
app_1    | {"hello":"goodbye"}

Внутреннее действие контроллера по умолчанию (все, что не сработало):

        $request = $this->getRequest();
        $hello = $request->query->get('hello');
        $hello1 = $request->request->get('hello');
        $hello2 = $request->get('hello');

        $json2 = filter_input(INPUT_POST, 'hello', FILTER_DEFAULT);

Всякий раз, когда я error_log() любую из указанных выше переменных я получаю пустым или равным нулю.

Что я делаю не так?

1 Ответ

1 голос
/ 07 июня 2019
if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
      $data = json_decode($request->getContent(), true);
}

Вы можете использовать php://input, но это неэффективно.

...