在 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
,但效率很低。
我花了 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
,但效率很低。