我正试图从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/getRaffle
URI。但是在您的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');
});