laravel报错405响应码,怎么解决?
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The GET method is not supported for this route. Supported methods: POST. in file D:\phpstudy_pro\WWW\wy\vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php on line 256
报错路由问题,路由请求方式是对的,跑接口请求一段时间后就报错
Route::post('/people_import', 'PeopleController@import')->name('导入');

public function collection(Collection $rows)
{
$admin = (new BaseService())->getThisAdmin(request()->token);
unset($rows[0]);
$images = $this->getImages();
$file = '';
$village_id = $admin->village_id;
$village = VillageList::where('id', $village_id)->first();
$insertUrl = config('myconfig.domain') . '/api/admin/wuye/addUser';
foreach ($rows as $row) {
$check = PeopleList::with('hpds')->where('people_tel', $row[1])->first();
// 所属房屋,房屋里会包含该房屋所属栋数
$hpd = HpdList::query()->where('hpd_name', $row[5])->first();
if (is_null($check)) {
if (isset($images[$row[2]])) {
$up = new UpMyFile();
$res = json_decode($up->ToFileOSS($images[$row[2]], '临时'), true);
if ($res['code'] == 200) {
$file = $res['data'];
// 移动人脸
$url = config('myconfig.domain') . '/api/admin/wuye/moveface';
$res = json_decode(curl($url, [
'img' => $file,
'name' => $row[1] . $row[0] . '_0',
'path' => 'people/' . $village->village_name
]), true);
if ($res['code'] == 200) {
$file = $res['data'];
} else {
$file = '';
}
}
}
$arr = [
'village_id' => $village_id,
'village_name' => $village->village_name,
'people_name' => $row[0],
'people_tel' => $row[1],
'people_type' => $row[3],
'people_id_no' => isset($row[4]) ? $row[4] : '',
'people_image' => $file,
'people_add_time' => date('Y-m-d H:i:s')
];
$people = PeopleList::create($arr);
if (!is_null($hpd)) {
SyncData::dispatch($people, $hpd->id, $hpd->arch_id);
// 关联房屋
/*$people->hpds()->sync($hpd->id);
// 关联栋数
$people->archs()->sync($hpd->arch_id);*/
}
$insert = $arr;
$insert['area'] = $village->village_no;
// AddUser::dispatch($insert, $insertUrl);
} else {
$archIds = [];
$hpdIds = [];
if (empty($check->toArray()['hpds'])) {
SyncData::dispatch($check, $hpd->id, $hpd->arch_id);
} else {
foreach ($check->toArray()['hpds'] as $v) {
// 没有该房屋关联
if ($row[5] != $v['hpd_name']) {
$hpdIds[] = $v['hpd_id']; // 已有房屋的id
if (!is_null($hpd)) {
$hpdIds[] = $hpd->id; // 新的房屋id
}
$archIds[] = $v['arch_id']; // 栋数id
}
}
if (!empty($archIds) && !empty($hpdIds)) {
SyncData::dispatch($check, $hpdIds, $archIds);
}
}
}
}
}
关于 LearnKu
符合当前路由的访问方式是POST,而你用了GET访问方式
应该是重定向导致的问题 我年前也遇到过这个问题 但想不太起来什么情况了 :joy:
查看下web服务器的access日志,
看看请求方式的是GET还是POST,
看你的报错日志是GET请求
你这种情况,应该是有跳转,或者 fallback 路由,访问的请求方式是 GET,所以提示 405,问题并不在你这个 POST 接口。你应该检查一下接口是否有 401, 404, 419,429 等行为,这些路由的请求方式都是 GET。
如果你排查不到,那应该先把问题暴露出来,先把这个接口的 POST 请求方式改为 ANY,然后再让接口跑一段时间,肯定会暴露问题的,到时候你再解决就好了。
要不你试下把代码全部注释,只保留打印试试?看你所说50条就出错,这个数量不会有啥问题。
楼主没太明白评论和你发的主题,报错信息是路由方法错误,你说改成100条队列就好了?
我明白你意思,你的队列测试是同步吗,里面还有请求吗
队列超时 把队列执行时间设置旧一点
问答:laravel8中路由访问时间过长POST请求会被重定向为GET的问题有没有人...
看看这个问答,自己遇到过,就是请求超时,配置一下apache相关配置文件即可