Symfony Restful Post: JMSSerializerBundle против компонентов формы Symfony

Насколько я понимаю, правильно десериализация JMSSerializerBundle делает то же самое, что и компонент формы Symfony, когда контроллер получает запрос post/put/patch?

Так что я либо создаю пользовательский formType для Symfony, например, для UserType, и когда я получаю запрос, я делаю что-то вроде $form->handleRequest($request), либо я использую JMSSerializerBundle, чтобы десериализовать запрос к документу / сущности, который в итоге сохраняется.

У кого-нибудь есть опыт работы с обоими методами? В настоящее время я знаком только с формой... Какой из них выбрать?

Приложение, о котором я говорю, чисто Restful, там нет html-шаблонов для веток, и FOSRestbundle выполняет всю RESTful-маршрутизацию.

2 ответа

Решение

В нашем restfull API мы обычно используем компонент Symfony Serializer для обработки десериализации сущностей, затем компонент Symfony Validator, чтобы гарантировать выполнение сущностями всех необходимых условий перед их отправкой / обновлением в базе данных. Работает довольно хорошо, легче, чем компонент формы.

В любом случае, компонент Form не сможет десериализовать json/xml, поэтому вам придется использовать сериализатор.

Преимущество компонента Symfony\Form по сравнению с JMS Serializer заключается в том, что проверка выполняется перед десериализацией, что соответствует строгой типизации PHP 7. Пример случая - вы передаете массив вместо строки, JMS создает и возражает, а геттер вызывает \TypeError вместо ошибки валидации от валидатора.

Другие вопросы по тегам