Eloquent: Ресурсы API против Фрактала
Быстрый вопрос, в чем разница между Eloquent: ресурсами API и Fractal?
Для меня это выглядит так же?
1 ответ
Оба используются для преобразования ответов API json для стандартизации структуры ответов.
Тем не менее, ресурсы API встроены в Laravel и очень просты в использовании. Фрактал был предпочтительным способом, когда ресурсы API не были встроены в Laravel. У Fractal есть несколько методов, которые делают его немного более обширным по сравнению с ресурсами API.
Но если учесть основные функциональные возможности, оба они одинаковы с разным синтаксическим сахаром.
Большинство вещей, которые были во фрактале, вы можете сделать изначально в Laravel. Плюс ресурсы API избавляют от необходимости дополнительной установки и настройки. В ресурсах API очень легко начать номенклатуру
Оба они созданы для одной работы, но их решения во многом различаются.
Отношения:
во фрактале вы можете легко добавить связанные модели к ответу. Кроме того, вы можете указать, когда соответствующие модели должны быть представлены в ответе. (по умолчанию включить или включить)
например, ваш клиент может использовать ?include=rate
при необходимости получить тарифную модель из статьи! Учтите, что фрактал будет загружать ваши отношения, когда вы забудете его загрузить.
в ресурсах API у вас нет контроля над отношениями, и вы должны решить, иметь отношения или нет, в первую очередь. в противном случае, если вы забыли загрузить для него данные, вам потребуется слишком много запросов для загрузки связанной модели (проблема 1+n).
Сериализатор
при базовом использовании ресурса api вы не можете контролировать, как данные будут отображаться в окончательном ответе.
например, если вам нужна спецификация jsonnapi для ваших ответов, вам следует управлять всеми работами самостоятельно. но во фрактале он у вас в первую очередь.
В заключение я рекомендую вам использовать фрактал в этом случае. (или используйте пакет dingo для api, но учитывайте сложность dingo!!)