ogb*_*jnr 9 rest symfony postman
我正在通过邮递员发送 POST 请求,其中包含 1 个头应用程序/json 和正文
{
"name": "user"
}
Run Code Online (Sandbox Code Playgroud)
当我尝试从请求对象中获取这个参数时,比如
$request->request->get('name')get null。但是当我使用时,$request->getContent()我收到原始字符串。
看起来我的请求没有正确解析。请求有什么问题?
更新:
原来文档对此不清楚,我需要手动将 body 转换为 json。真的不明白为什么默认情况下不在框架中这样做。
Cac*_*nde 21
这是预期的行为。您将在请求正文中发送一个 JSON 字符串。
在这种情况下,您需要json_decode将 JSON 字符串转换为数组或对象,以便访问数据。
$parameters = json_decode($request->getContent(), true);
echo $parameters['name']; // will print 'user'
Run Code Online (Sandbox Code Playgroud)
虽然接受的答案是正确的,但我想在这里补充一下,有两种方法可以做到这一点。
$payload = json_decode($request->getContent(), true);
echo $payload['name']; // will print 'user'
Run Code Online (Sandbox Code Playgroud)
或者
$payload = json_decode($request->getContent(), false);
echo $payload->name; // will print 'user'
Run Code Online (Sandbox Code Playgroud)
默认情况下,除非第二个参数另有指定,否则 json_decode 返回一个对象。
如果您想将请求正文解码为数组,可以使用一个方便的辅助方法,称为toArray。您可以在Symfony 文档中阅读有关访问请求数据的更多信息
$request->toArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13348 次 |
| 最近记录: |