В настоящее время я работаю над проектом со сложной бизнес-логикой на Symfony 3.
Я хочу использовать JSON API для обеспечения связи между интерфейсом и сервером. Раньше я разрабатывал очень плохо спроектированные API и не особо задумывался о том, как их лучше всего обрабатывать, например, когда у меня было (например)
/resource?include=field1,field2
Я только что проанализировал эти включенные поля в своем действии контроллера. В результате через какое-то время код приложения всегда становился трудным для чтения, повторного использования и сопровождения.
Но теперь меня интересует, как лучше всего обрабатывать запросы, например:
/users?fields[users]=id,first_name,last_name,avatar_src&include=comments&fields[comments]=author,text,likes_count,reposts_count,created_at&sort=-comments.created_at&filter[users][region_id]=3
В приложении есть еще несколько ресурсов, каждый из которых предоставляет множество различных полей (некоторые из которых должны иметь дело с соединениями MySQL для получения), сортировки, фильтры. Более того, каждый ресурс можно расширить с помощью included параметра запроса, чтобы указать, что мы хотим получить дополнительные ресурсы.
Я думал как-то централизовать парсинг входящего запроса в своего рода EventListener, который будет собирать все данные, сопоставлять их с Doctrine Entities и строить какую-то DQL-схему. Действие контроллера поймает его, чтобы вернуть ответ.
Должен ли я попробовать это? А может это тоже очень плохое решение? Не могли бы вы порекомендовать что-нибудь о том, как правильно с этим бороться?