API-адаптер для Laravel Eloquent? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть интересный вопрос об использовании Laravel Eloquent.Я пишу админ-панель на основе Laravel с Nova.Он должен отправить запрос и получить ответ на остальные API.Есть ли какое-либо решение использовать мои красноречивые модели в качестве «запроса API»?

Я думаю о том, сделаю ли я следующее: User::all() и после этого в фоновом режиме API отправит запрос в«конечная точка пользователя» API, и я получаю обратно коллекцию?

Это может называться «драйвером API» вместо драйвера MySQL или каким-то адаптером для этого, но я не знаю, где мне следует это делатьискать или что я должен делать.

Было бы неплохо, если бы я мог использовать это, потому что я могу использовать все красноречивые функции в ответе json.

1 Ответ

0 голосов
/ 02 июля 2019

Если вы хотите вернуть JSON, просто верните модель / коллекцию напрямую, потому что Laravel сериализует данные по умолчанию, но, конечно, у вас есть несколько опций , чтобы сделать это:

Сериализация в JSON

Чтобы преобразовать модель в JSON, вы должны использовать метод toJson.Как и toArray, метод toJson является рекурсивным, поэтому все атрибуты и отношения будут преобразованы в JSON.Вы также можете указать параметры кодирования JSON, поддерживаемые PHP:

$user = App\User::find(1);

return $user->toJson();

return $user->toJson(JSON_PRETTY_PRINT);

В качестве альтернативы вы можете привести модель или коллекцию к строке, которая автоматически вызовет метод toJson для модели или коллекции:

$user = App\User::find(1);

return (string) $user;

Поскольку модели и коллекции при преобразовании в строку преобразуются в JSON, вы можете возвращать объекты Eloquent непосредственно из маршрутов или контроллеров вашего приложения:

Route::get('users', function () {
    return App\User::all();
});

Примечание

При возврате объекта / json напрямую не забудьте включить в запрос API заголовок Accept: Application/json.

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