树莓派Python发送POST请求JSON到Laravel返回空数组如何解决
修复方案
你遇到的问题由多个配置不匹配导致,按以下步骤逐一修复即可:
1. 修正路由请求方法
树莓派Python代码使用POST方法发送数据,但当前Laravel的api路由定义为GET类型,请求类型不匹配导致无法正确接收参数。
将routes/api.php中的路由修改为:
Route::post('dictionary', [DictionaryController::class, 'store'])->name('dict');
2. 修正请求路径
Laravel的api.php中定义的所有路由默认会自动添加/api前缀,你当前Python代码请求的是站点根路径,没有匹配到你定义的dictionary路由。
将Python代码中的请求地址修改为:
# 注意末尾新增的/api/dictionary和路由对应 ip = 'http://192.168.1.6:14000/api/dictionary'
3. 优化Python请求逻辑(可选,避免JSON序列化异常)
requests库原生支持直接传递字典参数作为JSON payload,不需要手动序列化、手动设置请求头,能减少格式出错概率。
可将原有的请求代码替换为:
# 不需要手动调用json.dumps,也不用手动设置Content-Type头 req = requests.post(ip, json=mac_dict)
验证排查
如果修改完成后仍返回空数据,可在Laravel的store方法中先打印原始请求内容,确认是否正常接收到数据:
public function store(Request $request) { // 输出原始请求体到storage/logs/laravel.log中,检查是否有你发送的JSON内容 \Log::info('收到的原始请求内容:' . $request->getContent()); return response()->json($request->all()); }
如果日志中能看到正确的JSON内容,但$request->all()为空,只需检查你发送的JSON格式是否符合规范即可。
内容的提问来源于stack exchange,提问作者user11989615
相关产品推荐
相关产品推荐

