You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel框架下使用Guzzle Http客户端发POST请求丢失Id属性问题求助

你的问题根源是混淆了原生Guzzle客户端和Laravel封装的Http门面的传参规则:

  • 原生Guzzle的post方法第二个参数需要传入包含json键的配置数组,才能自动序列化JSON
  • 但Laravel的Http门面做了封装,post方法的第二个参数直接接收要序列化的JSON数据数组,不需要额外套json键。你当前的写法实际发送的请求体是{"json":{"Id":"4"}},服务器自然找不到顶层的Id属性。

方案1:使用Laravel Http门面的标准写法(推荐)

直接把数据数组传给post方法的第二个参数即可,Laravel会自动完成JSON序列化、设置对应的请求头:

$url = "https://blablabla.com/api";
$key = "1234";
$data = [
    'Id' => "4"
];
$response = Http::withHeaders([
    "Authorization" =>  $key
])->post($url, $data);

方案2:兼容原生Guzzle配置的写法

如果你需要保留原生Guzzle的配置传递方式,可以通过withOptions方法传入json参数:

$url = "https://blablabla.com/api";
$key = "1234";
$data = [
    'Id' => "4"
];
$response = Http::withHeaders([
    "Authorization" =>  $key
])->withOptions([
    'json' => $data
])->post($url);

调试建议

后续遇到类似请求参数问题,可以在发送请求前链式调用->dump()方法,Laravel会打印完整的请求信息,方便快速排查参数格式问题。

内容的提问来源于stack exchange,提问作者The Stompiest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:45:05