在 Symfony 2.3 控制器中访问 POST 请求的 JSON 正文
Posted
技术标签:
【中文标题】在 Symfony 2.3 控制器中访问 POST 请求的 JSON 正文【英文标题】:Accessing JSON body of POST request in Symfony 2.3 controller 【发布时间】:2019-10-22 14:18:01 【问题描述】:过去 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() 任何上述变量时,我都会得到空白或 nil。
我做错了什么?
【问题讨论】:
【参考方案1】:if (0 === strpos($request->headers->get('Content-Type'), 'application/json'))
$data = json_decode($request->getContent(), true);
您可以使用php://input
,但效率低下。
【讨论】:
事实证明你是对的,请编辑你的答案,我会投赞成票。谢谢! 我对你的答案投了反对票,因为我认为它指的是不同版本的 Symfony——所以除非你编辑你的答案,否则我不会让我把我的投票改成赞成票 :)以上是关于在 Symfony 2.3 控制器中访问 POST 请求的 JSON 正文的主要内容,如果未能解决你的问题,请参考以下文章
symfony 2.3 在 __construct 函数中调用非对象的成员函数 get()
如何使用 Symfony 和 Jquery 发出 POST Ajax 请求
Symfony2:KnpPaginator 仅显示带有 POST 表单的第一页
Symfony 2.3 - 使用带有 LESS 的 Twitter Bootstrap 3,通过 composer setup 作为供应商安装,无法访问 Glyphicons 字体