TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #4436 3.33K
Преобразование запросов и ответов API в Laravel 11

Автор рассказывает о своем опыте работы с приложением, использующим Next.js на фронтенде и Laravel на бэкенде в качестве традиционного REST API. Он столкнулся с проблемой различных соглашений по именованию в PHP и JavaScript, где в первом случае принято использовать snake_case, а во втором — camelCase. Это вызвало трудности при форматировании API-ответов, так как таблицы и колонки базы данных также использовали snake_case.

Для решения этой проблемы предложено использовать Laravel resources для создания чистых API-ответов, где каждый ключ можно было указать в camelCase. Он представил класс ProductResource, который наследует JsonResource и позволяет преобразовывать ресурс в массив с ключами в camelCase.

Однако, поскольку форматирование каждого API-ответа в camelCase может быть трудоемким, особенно при наличии отношений Eloquent, которые также нужно форматировать, автор предложил создать базовый класс BaseResource, который расширяет класс JsonResource и форматирует все ключи в camelCase. Этот класс использует метод Str::camel() из Laravel для преобразования ключей и рекурсивно обрабатывает вложенные массивы.

В результате, у автора получилось два сценария использования:

1. Простое наследование от класса BaseResource для отображения видимых полей таблицы без форматирования отношений или скрытых полей, исключенных из API-ответа.

2. Форматирование API-ответа с сохранением snake_case, расширением класса BaseResource и реализацией метода toCamelCase().
DEV Community Transforming API requests and responses in Laravel 11 - The easy way The problem I've been working on an application using Next.js on the front-end and Laravel...
  • 👍 5
  • 🌚 1
More from @phpproglib
  1. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  2. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  3. Sep 30, 2026🐸 Библиотека пхпшника
  4. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  5. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  6. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →