Решаемые. API-ответ Laravel не показывает - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть некоторая проблема, когда я хочу вернуть значение из 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 Ответ

1 голос
/ 21 ноября 2019

Это потому, что вы возвращаете GenericUser, Illuminate\Auth\GenericUser, а не Eloquent Model;вы не используете модель Eloquent для провайдера, которого использует ваша охрана. Этот класс не имеет никаких средств для сериализации этого объекта в JSON, как это делает Модель, и не имеет никаких открытых свойств, которые json_encode может сериализовать.

Если вы json_encode этот объект, вы получите пустойобъект в формате JSON:

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

// {}

Возможно, вы хотите использовать для аутентификации Eloquent Model, например App\User?

config/auth.php

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

Выв настоящее время вы используете драйвер 'database' для вашего 'users' провайдера, поэтому вы получаете GenericUser для представления вашего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...