Разрабатываю приложения с RESTFull API на Laravel. Посоветуйте, как правильнее будет реализовать форматирование и возврат данных в JSON формате с контроллеров Laravel ?
В большинстве обучающих примеров, которые я видел, возвращалась просто модель:
public function show($id)
{
$post = \App\Models\Post::findOrFail($id);
return $post;
}
В результате на фронте получаем JSON-массив:
{
"id": 1,
"name": "Пример статьи",
"slug": "primer,
"body":"",
"category_id":1
"created_at": "2017-08-23 14:26:41",
"updated_at": "2017-08-23 14:26:41",
"deleted_at": null,
}
Еще делают так:
public function create(Request $request)
{
//...
return response()->json(['success' => true, 'data' = 'Данные успешно сохранены']);
}
Проблемы и вопросы при таком подходе:
1. В большинстве случаев, на фронтенде нам не надо показывать всех полей таблицы (category_id, updated_at, deleted_at,...). Каждый раз вручную массив в каждом контроллере, мне кажется не совсем будет правильно...
2. А что, если нам нужно, например к статьям вытянуть все комментарии (только также без лишних полей)
3. Нужно вытянуть все категории -> их статьи -> их комментарии
4. Нужно определенные поля вывести в определенном формате, например дату.
Для работы с данными использую паттерн "репозиторий". На фронтенде, пока что планируется, сайт на vue.js.
Может кто-то использует пакет
spatie/laravel-fractal , какие будут отзывы, рекомендации.
Хотелось бы увидеть хорошие примере разработки таких систем и какие инструменты там используются.