首页 > 解决方案 > 在 Symfony 2.3 控制器中访问 POST 请求的 JSON 正文

问题描述

在过去的 3 个小时里,我试图将传入的 POST 请求的 JSON 正文解析到我在 Symfony 2.3.3 中构建的 API 端点。

我终其一生都无法弄清楚如何进入身体,这让我发疯。我有一个墓地,里面装满了我尝试过的语法,但都没有奏效。所有没有奏效的都在下面。

发帖请求:

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

我究竟做错了什么?

标签: phpsymfonypostsymfony-2.1symfony-2.3

解决方案


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

你可以使用php://input,但效率低下。


推荐阅读