【问题标题】:API returning empty array instead of data in Laravel VueAPI在Laravel Vue中返回空数组而不是数据
【发布时间】:2020-01-05 21:30:42
【问题描述】:

我正在为学校做一个 Laravel Vue 项目,我应该通过从客户端发送电子邮件来获取用户,但是当服务器响应时,我从响应数据中得到一个空数组,而不是我想要的数据数据库。

登录.vue

login() {

        this.showMessage = true;
        this.typeofmsg = "alert";
        this.message = "Loggin in...";

        axios.post('api/login', this.user)
            .then(response => {
                const token = response.data.access_token;
                this.$store.commit('setAccessToken', token);
                return axios.get('api/users/me', this.user.email);
            })
            .then(response => {
                console.log(response);
            })
            .catch(error => {
                console.log("Error = " + error.message);
            });

    },

路由/api.js

Route::get('users/me', 'UserControllerAPI@myProfile');

用户控制器API

public function myProfile(Request $request){
    $email = $request->email;
    $user = User::where('email', $email)->first();
    return new UserResource($user);
}

如果我尝试使用邮递员获取它,它可以工作

在开发工具控制台中我得到了这个

对不起,如果我不够清楚或者是做错了什么,我从昨天开始一直在尝试解决这个问题,这让我发疯了。任何帮助表示赞赏

编辑:路线错误,但我改变了它,我得到了相同的,没有数据。我也改了控制台图片

【问题讨论】:

  • 从开发工具控制台,请求似乎被更改为/wallet ...除非该日志不是您刚刚发送的请求...
  • 直到现在我才注意到,我有一个计算函数可以获取要显示的钱包总数,但我认为这没有关系?
  • 我已经更新了我的答案,请尝试一下,看看它是否能解决问题...
  • 我试图改变一些东西,但我不再是一个 html 页面,但我仍然无法访问我试图获取的数据,因为它以一个空数组响应。已经编辑了帖子并添加了新的控制台日志
  • 我试图改变一些东西,但我不再是一个 html 页面,但我仍然无法访问我试图获取的数据,因为它以一个空数组响应。已经编辑了帖子并添加了新的控制台日志

标签: php laravel vue.js


【解决方案1】:

改变这一行:

return axios.get('api/users/me', this.user.email);

return axios.get('api/users/me', { params: { email: this.user.email } });

【讨论】:

  • 是的,我改变了它,但我仍然得到相同的,没有有用的数据。感谢您的回答
  • 对不起,直到现在才看到。我改变了它,我收到了用户数据。非常感谢你帮助我
  • 不客气...因为电子邮件没有被发送...导致错误 500 并且您看到的 HTML 是错误 500 页面作为数据返回...
  • 哦,因为我在日志中没有任何内容,并且我在服务器中收到了电子邮件,所以我相信它正在发送。谢谢你的解释
  • 为了将来验证代码,您可以尝试在控制器中添加异常处理,以便在任何失败时正确发送带有正确状态代码的错误消息...
【解决方案2】:

你有 api/user/me 并且在路由中你有 /userS/me

所以我猜您必须删除 S 或在其中一个位置添加 S。

所以尝试改变路线

Route::get('users/me', 'UserControllerAPI@myProfile');

Route::get('/user/me', 'UserControllerAPI@myProfile');

【讨论】:

  • 是的,之前的答案是正确的,我没有提到 axios 参数也被错误地传递了。
猜你喜欢
  • 2018-07-30
  • 2020-12-31
  • 1970-01-01
  • 2015-04-19
  • 2019-06-05
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
相关资源
最近更新 更多