Создан  demius PM 2 года назад; Обновил  demius PM 8 месяцев назад

Каким образом и в каком формате проект будет рендерить ответы в виде json

Если бы у нас был чистый api, туда можно было бы прикрутить сваггер и генерить viewModel’ы. Но мы делаем классический проект, с рендером html на сервере и многостраничным фронтом. при этом как-то унифицировать ответы функций и удобно их описывать хочется.

В идеале способом похожим на тот, что мы делаем для html-ответов. Т.е. какая-то диреткория с шаблонами объектов, и renderer который бы заполнял эти шаблоны из данных переданных контроллером. Правда это будет похоже на superjob’овский мапер, а он слишком сложен для с десятка ajax-методов, разбросанных по проекту.

Вариант 2, слой ViewModel, в котором будут dto, и слой трансформеров эти dto заполняющие и серализующие. ViewModel мне по нраву, но их у нас нигде больше нет, и может это рановато.

Вариант 2.5, трансформер получающий на входе массив и просто совершающий сериализацию и возврат JsonResponse аналогично twig->render. А ViewModel мы отдельной задачей будем делать для всего, данных передаваемых в шаблоны и данных передаваемых этому трансформеру.

Комментарии могут оставлять только авторизованные пользователи
 demius 8 месяцев назад

Сейчас ViewModel используются для сборки объектов с данными для твига. А ViewTransformer большей частью для сборки json. Хотя ViewTransofmer/Table созданы для сборки ViewModel

 demius год и 4 месяца назад

По итогу завели и ViewModel и ViewTransformer. И используем их и для моделек отправлюящихся как json в ajax, и для моделек в шаблоны. Задача в целом закрыта, но хотелось бы какого-то более очевидного и понятого деления

 demius год и 7 месяцев назад

Так что тут надо поисследовать и придумать красивое и очевидное разделение.

 demius год и 7 месяцев назад

Строг говоря ViewModel сейчас с ajax и json вобще не связаны, трансформеры отдают массивы.

 demius год и 7 месяцев назад

по итогу мы таки завели директорию viewModel и ViewTransformers. Трансформеры нужны для формирования красивых json в одном месте, и в целом работают ок. ViewModel так же используется для моделек разных объектов в том числе для передачи данных в шаблоны, если эти данные униклаьны для презентации, и не лежат уже в доменных моделях. В целом все хорошо, но боюсь ViewModel быстро станет мусорной в которой сложно ориентироваться.