在 Symfony 2.3 控制器中访问 JSON body of POST 请求

Accessing JSON body of POST request in Symfony 2.3 controller

我花了 3 个小时试图解析传入 POST 请求的 JSON body 到我在 Symfony 中构建的 API 端点2.3.3.

我这辈子都想不出如何访问 body,这让我抓狂。我有一个满是我尝试过的语法的墓地,其中 none 行得通。所有没有用的都在下面。

Post 请求:

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() 以上任何一个变量时,我都会得到空白或 nil。

我做错了什么?

if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
      $data = json_decode($request->getContent(), true);
}

您可以使用 php://input,但效率很低。