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

树莓派4 Python发送JSON至Laravel无响应及数据展示问题求助

问题修复方案

1. 问题根因梳理

  • GET请求不适合携带请求体数据,你用requests.get的data参数传递JSON,Laravel默认不会读取GET请求的请求体内容,自然拿不到数据
  • Laravel的store方法按照规范应该对应POST请求,当前路由定义为GET不符合数据提交的逻辑
  • 手动序列化JSON再传递的方式容易出现请求头不匹配的问题,requests库有更简便的JSON传递方案

2. Python代码修改

把最后的请求部分改为POST请求,直接传字典给json参数,requests会自动设置Content-Type: application/json请求头,也不需要你手动做JSON序列化:

# 替换原有的requests.get请求代码
r = requests.post(ip, json=mac_dict)
print(r.text)

注意ip参数需填写你Laravel服务的完整API地址,比如http://你的服务地址/api/dictionary,如果是局域网测试填对应局域网IP即可。

3. Laravel路由修改

把api.php里的路由改为POST类型:

Route::post('dictionary', [DictionaryController::class, 'store'])->name('dictionary');

4. Laravel控制器逻辑调整

调试阶段可以直接返回接收的数据验证是否正常:

public function store(Request $request)
{
    return response()->json($request->all());
}

如果需要把接收的JSON存为文件可以改成:

public function store(Request $request)
{
    $data = $request->all();
    // 文件存在storage/app目录下
    file_put_contents(storage_path('app/mac_addr.json'), json_encode($data, JSON_PRETTY_PRINT));
    return response()->json(['status' => 'success', 'received_data' => $data]);
}

5. Blade页面展示JSON内容

首先在控制器的index方法读取存好的JSON文件,传递给视图:

public function index()
{
    $jsonPath = storage_path('app/mac_addr.json');
    $macData = file_exists($jsonPath) ? json_decode(file_get_contents($jsonPath), true) : [];
    return view('backend.auth.user.dictionary', compact('macData'));
}

然后在dictionary.blade.php里展示内容,两种常用展示方式:

<!-- 方式1:格式化输出完整JSON结构 -->
<pre>
{{ json_encode($macData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) }}
</pre>

<!-- 方式2:遍历成可读列表 -->
@if(count($macData) > 0)
    <ul>
        @foreach($macData as $macAddr => $rssiList)
            <li>MAC地址:{{ $macAddr }},对应RSSI值:{{ implode(', ', $rssiList) }}</li>
        @endforeach
    </ul>
@else
    <p>暂未收到蓝牙数据</p>
@endif

注意事项

api.php下的路由默认没有开启CSRF验证,不用额外处理跨域请求的令牌问题,如果出现419错误可以确认下路由是否放在了web.php里,如果是的话需要把请求地址加入CSRF白名单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:36:04