405(方法不允许)Laravel&Node&Axios



我正试图从node.js端发送post请求。我的节点文件

axios.defaults.baseURL = domain + '/api/server';
const getRaffle = () => {
axios.post('/giveaway/getRaffle')
.then(res => {
console.log(res.data)
io.sockets.emit('setRaffle', res.data);
})
.catch(err => {
console.log(err);
});
};

Web.php/api.php(在它们中都不起作用。当我使用api时,我知道我需要使用/api(

Route::group(['prefix' => '/server'], function() {
Route::post('/getRaffle', 'GiveawayController@getRaffle');
});

在此之后,在终端中出现错误:POST方法不支持此路由。支持的方法:GET、HEAD。谢谢你的帮助!

在您的代码示例中,您在api.php路由中定义了一个路由/server/getRaffle,这意味着它将具有/api/server/getRaffleURI。但是在您的Javascript代码中,您正在向/api/server/giveaway/getRaffle发出请求。我建议你仔细检查一下。

您可以使用php artisan route:list命令检查所有定义的路线。如果未列出路由,则可能会缓存您的路由,在这种情况下,您需要运行php artisan route:clear来删除路由缓存。再次运行php artisan route:list,查看您的路线现在是否显示。

您正在向发送请求

domain + '/api/server/giveaway/getRaffle'

但是,您的Laravel应用程序中没有此端点。您在路由文件中写入的代码块:

Route::group(['prefix' => '/server'], function() {
Route::post('/getRaffle', 'GiveawayController@getRaffle');
});

映射到:

/api/server/getRaffle而非/api/server/giveaway/getRaffle

要么将您的js-axios调用代码更改为:

axios.defaults.baseURL=domain+'/api/server';

const getRaffle = () => {
axios.post('/getRaffle')
.then(res => {
console.log(res.data)
io.sockets.emit('setRaffle', res.data);
})
.catch(err => {
console.log(err);
});
};

或者将您的Laravel路由器文件代码更改为:

Route::group(['prefix' => '/server'], function() {
Route::post('/giveaway/getRaffle', 'GiveawayController@getRaffle');
});

最新更新