php - 在 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() 任何上述变量时,我都会得到空白或零。
我究竟做错了什么?
解决方案
if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
$data = json_decode($request->getContent(), true);
}
你可以使用php://input
,但效率低下。
推荐阅读
- playframework - 如何使用 sbt-native-packager 插件 v1.9.2 并修复“未找到”错误?
- go - 错误:获取广播客户端时出错:订购者客户端无法连接到订购者:7050:未能创建新连接:上下文截止日期
- flutter - 输入文本后点击 Flutter 集成测试中的 enter/done/return 按钮
- firebase - Firebase 查询未获取具有特定字段的文档
- java - 媒体播放器安卓
- swiftui - 如何在自定义 SwiftUI 视图上添加自定义点击处理程序?
- java - RxJava2 - 将对象处理的结果分组到 Map
> - sql - 为什么在表 (acct_trans) 中插入事务详细信息时出现 oracle 存储过程错误?
- sql-server - sql中的多个数据库创建脚本
- python - 使用日期时间作为键的嵌套字典中的 Python 字典 TypeError