php - 使用 curl 访问 Symfony 4 控制器中的 POST 值
问题描述
早上好。
我目前正在尝试从 Symfony 4 控制器中的 curl 请求访问 POST 数据。
我的控制器如下所示:
class OrderController extends AbstractController
{
/**
* @Route("/order", name="order")
*/
public function index(Request $request)
{
var_dump($request->request->all());die;
return $this->json([
'message' => 'Welcome to your new controller!',
'path' => 'src/Controller/OrderController.php',
]);
}
}
当我php bin\console server:run
在浏览器中运行并访问本地主机/订单时,我得到了它应该得到的页面。如果我用
curl http://127.0.0.1:8000/order
我也得到了正确的结果。但是当我尝试在 curl 请求上发送一个 json 正文时,在上面的控制器上我只得到一个空数组。
我的请求如下所示:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '
{'json':{
"id": "1",
"customer-id": "1",
"items": [
{
"product-id": "B102",
"quantity": "10",
"unit-price": "4.99",
"total": "49.90"
}
],
"total": "49.90"
}}' http://127.0.0.1:8000/order
知道我在做什么错吗?
解决方案
Request 对象只会通过 $request->request 方法返回表单参数。如果要访问 JSON 正文,则需要使用 $request->getContent()。如果该内容是 json,您的代码将如下所示:
$json = json_decode($request->getContent(), true);
var_dump($json['json']);
推荐阅读
- c# - 斐波那契函数在应该为正时返回负值
- android - 更新到 Android Studio 版本 4.1.3 后出现 Gradle 问题
- cassandra - 如何增加 Cassandra 中非计数器列的值?
- copy - 将记录从子表单上的一个字段复制到另一个子表单
- python - 未创建 Canvas 的图像
- java - Mono.subscribe() 向客户端抛出异常
- python - Python 中 switch/case 的语法等价物是什么?
- reactjs - Reactjs 不加载文本字体
- excel - 如何绘制使用 Excel 的默认导入向导导入的 csv 数据?
- ios - CocoaPods 不能正常工作?我该如何解决?