在Symfony 2.3控制器中访问POST请求的JSON正文

时间:2019-06-07 04:52:41

标签: php symfony post symfony-2.1 symfony-2.3

过去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()以上任何变量时,我都为空或无。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

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

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