解决了。 api响应laravel不显示

时间:2019-11-21 09:14:21

标签: php laravel api response

我想从api返回值时遇到一些问题,当我使用dd()函数时,它将显示结果。但是当我使用return时,它不会显示结果

Route::middleware('auth:api')->get('/user', function (Request $request) {
    dd($request->user()); 
});

when use dd()

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return response()->json($request->user());
});

nothing to show

有什么想法可以展示它吗?

1 个答案:

答案 0 :(得分:1)

那是因为您返回的是GenericUserIlluminate\Auth\GenericUser,而不是雄辩的模型;您没有为Guard使用的用户提供程序使用口才模型。此类没有任何方法可以像Model一样将该对象序列化为JSON,并且没有json_encode可以序列化的任何公共属性。

如果您json_encode该对象,您将获得JSON表示法的空对象:

echo json_encode(new Illuminate\Auth\GenericUser(['id' => 1]));

// {}

也许您想使用诸如App\User之类的口才模型进行身份验证?

config/auth.php

$providers = [
    ...
    'users' => [
        'dirver' => 'eloquent',
        'model' => App\User::class,
    ],
];

您当前正在为'database'提供者使用'users'驱动程序,因此您将获得GenericUser来代表您的用户。