'api response laravel doesn't show
I have some problem when I want to return a value from api, when I use dd()
function it will show the result. But when I use return, it doesn't show the result
Route::middleware('auth:api')->get('/user', function (Request $request) {
dd($request->user());
});
Route::middleware('auth:api')->get('/user', function (Request $request) {
return response()->json($request->user());
});
Any ideas how to show it?
Solution 1:[1]
That is because you are returning a GenericUser
, Illuminate\Auth\GenericUser
, not an Eloquent Model; you are not using an Eloquent Model for the User Provider your Guard is using. This class doesn't have any means to serialize this object to JSON like a Model does and doesn't have any public properties that json_encode
could serialize.
If you json_encode
this object you get an empty object in JSON notation:
echo json_encode(new Illuminate\Auth\GenericUser(['id' => 1]));
// {}
Perhaps you want to be using an Eloquent Model such as App\User
for authentication?
config/auth.php
$providers = [
...
'users' => [
'dirver' => 'eloquent',
'model' => App\User::class,
],
];
You are currently using the 'database'
driver for your 'users'
provider so you get a GenericUser
to represent your user.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |