路由不支持POST方法报错,如何通过CURL提交数据存入数据库
错误根因
你收到的报错是因为路由注册时指定的仅支持GET/HEAD请求,而你提交数据的CURL默认使用POST方式发起请求,二者请求方法不匹配导致校验不通过。
调整步骤
1. 修改路由定义
将原路由的请求方法从get改为post,符合数据写入操作的请求规范:
// 原代码:Route::get('statistics',[StatisticsController::class,'store']); // 修改后: Route::post('statistics',[StatisticsController::class,'store']);
注意:如果该路由写在web.php中,Laravel默认会校验CSRF令牌,你可以将这条路由移至api.php中(自动跳过CSRF校验),或者在app/Http/Middleware/VerifyCsrfToken.php的$except属性中添加该路由地址排除校验
2. 优化CURL请求配置
显式声明CURL使用POST请求,避免不同环境下curl默认行为异常,也可以按需添加返回值接收、超时等配置:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://localhost/kdk_local/statistics"); // 显式指定使用POST请求 curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "game_id=3&user_id=3&bet=3&win=3&session_id=3"); // 可选配置:要求接口返回结果作为curl_exec返回值,而不是直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); // 可选:捕获请求错误 if(curl_errno($ch)) { $error_msg = curl_error($ch); // 这里可以处理错误日志 } curl_close($ch);
3. 补充模型配置(可选,避免批量赋值报错)
确认你的Statistics模型中已经配置了$fillable属性,允许对应字段批量赋值:
// Statistics.php 模型中添加 protected $fillable = ['game_id', 'user_id', 'bet', 'win', 'session_id'];
完成以上调整后即可正常接收POST提交的数据并写入数据库。
内容的提问来源于stack exchange,提问作者Hammad Rafi
相关产品推荐
相关产品推荐

