2013-09-09 5 views
1

мой сценарий следующий. То, что я хочу знать, - это хороший способ разработки и организации моего кода.symfony2 DataTransformer вне формы

У меня есть REST API, который позволяет извлекать или хранить некоторые данные. У меня есть набор классов Entity, который представляет мою модель, но, как обычно, объекты JSON, отправляемые или получаемые API, не имеют тех же атрибутов, что и классы Entity. Например:

Person (id, name, creationDate, lastModifDate) 

Когда запрос пользователя Я Личность с ID = 10, я не хочу, чтобы вернуть lastModifDate ATTRIB.

Si Я собираюсь создать какой-то «трансформатор» или «конвертер» между объектами JSON, которые обрабатывают API/отправляет и мою модель Entity.

Какие стратегии вы рекомендуете?

  • DataTransformer, но я не хочу использовать формы
  • ParamConverter, только полезно для данных, полученных не для данных, которые будут посылать.
  • Создайте несколько DTO или VO, представляющие мои Entities (без нежелательных атрибутов, чтобы вернуться) и создать некоторые «конвертер» классы (по аналогии с DataTransformer), которые отвечают на:
    • Преобразования данных JSON в VO и от VO для сущности.
    • конвертировать из объекта в VO и из данных VO в JSON.

Любые советы и предложения будут оценены.

+1

Вы можете создать службу утилиты, которая будет принимать JSON в качестве входного параметра и возвращает объект сущности. Внутри этой службы вы просто создаете новый экземпляр объекта объекта, заполняете свойства и возвращаете его. – dmnptr

ответ

1

Если вы используете FOSRestBundle, вы можете использовать FormTypes и весь компонент формы для преобразования ввода. Поля в типах форм определяют поля, которые пользователь может отправлять через POST/PUT. То же, что и в веб-форме.

Для выходов используйте JMSSerializerBundle с сериализованными группами (также поддерживаемыми в FOSRestBundle в прослушивателе просмотра).

И посмотрите на этом прекрасном блог: REST APIs with Symfony2: The Right Way