Laravel 统一 API 路由
大家好,我有一个问题想请教一下。
关于API统一路由访问的问题(所有url都指向同一个,根据不同的参数来调用不同的方法)。
前后端分离开发。前端用的是Vue axios发送请求,在钩子函数中将access_token添加到Header中;后端用的Laravel,通过Passport进行用户认证。
前端登录代码如下,使用axios发送请求:
const urlPath = '/serviceAction'
// 用户登录
export function loginByUsername(username, password) {
const params = {
eventcode: 'login',
username: username,
password: password
}
return request({
url: urlPath,
method: 'post',
params: params
})
}
用户登录后,将获取的token值保存到cookie中。
前端登出代码如下:
export function logout(token) {
var params = {
eventcode:'logout',
}
return request({
url: urlPath,// 同上
method: 'post',
params: params
})
}
上两部分代码显示,登录和登出都是post到同一个url,只是根据eventcode进行判断不同。
目前我的Laravel API路由设置和控制器代码如下:
// 路由设置
Route::post('serviceAction', 'API\ServiceActionController@actionDo');
// 控制器ServiceActionController函数actionDo
public function actionDo(Request $request)
{
$eventCode = $request->input('eventcode');
if ($eventCode == 'login') {
return $this->login($request);// login为控制器ServiceActionController的另一个函数
}
else if ($eventCode == 'logout') {
return $this->logout($request);// logout为控制器ServiceActionController的另一个函数
}
return 'bad ';
}
能不能login不使用中间件auth:api,而其他所有方法均使用用户认证中间件?
问题描述完毕,先谢谢大家。
推荐文章: