【发布时间】:2020-02-27 01:23:57
【问题描述】:
我想创建一个自定义登录系统,使用 vue 作为前端,laravel 处理 api,axios 作为两者之间的控制器。我想从我的AuthController 获取返回的数据。这是我的代码:
Vue:
export default {
name: 'Login',
data(){
return {
user_input: [
{email: ''},
{password: ''}
],
csrf: document.querySelector('meta[name="csrf-token"]').getAttribute('content')
}
},
methods: {
userLogin: function(){
let params = Object.assign ({}, this.user_input)
axios.post('/api/login/', params)
.then(function(response){
console.log(response.data)
})
.catch(function(error){
console.log(error)
})
}
}
}
在 AuthController 中:
public function login(Request $request) {
return "Hey";
}
控制台上的输出是这样的:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="csrf-token" content="40lajOfdWdmIQ1yP49dyeyToidT79CntGyHqrNRD">
<link rel="stylesheet" href="/css/app.css">
<title>VueComplete</title>
</head>
<body>
<div id="app">
<App/>
</div>
<script src="http://vuecomplete.test/js/app.js"></script>
</body>
(这基本上是我的 app.blade.php 视图)。
为什么不返回“嘿”?
我也试过了:
public function login(Request $request) {
return $request->email;
}
但它产生了相同的结果。我怎样才能解决这个问题? 非常感谢!
更新
我正在使用 vue-router 在 laravel 中创建一个 SPA。在我的路线(web.php)中,我有点像这样:
Route::get('/{any}', 'SPAController@index')->where('any','.*');
然后在控制器中:
public function index() {
return view('app');
}
这可能是它返回 app.blade.php 的整个 html 代码的原因。
有没有办法在仍然使用 vue-router 的 SPA 功能的同时访问api/login?
【问题讨论】:
-
您是否也可以发布您的 route/api.php 以显示您的“/api/login/”实际上指向 AuthController@login ?
-
@TerryD 我已经更新了我的问题。我在我的 web.php 中使用了一个“re-router”,它总是指向主视图(app.blade.php)。这可能就是它返回所有 html 代码的原因。有没有办法在启用此重新路由器的情况下访问 api/login?