появилась необходимость сделать API для уже работающего сайта, после написания нескольких методов для API возник вопрос правильности архитектуры.
Сайт уже функционируют и внутри уже есть методы для генерации html/json
Вот какие появились пути развития:
— Дублировать ли методы в API, с учетом, что предполагается дальнейшая активная разработка web
— Интегрироваться ли с текущей web-частью, просто делая обертки для API-методов
— Переделать веб-часть для прямой работы с API, в дальнейшем заниматься только разработкой API
Как лучше поступить, возможно, есть более оптимальный, нежели один из этих трех путей
Есть мнение, что для API должен быть выделен отдельный набор контроллеров с отдельным базовыми классом. Структуру основного сайта вы можете менять как угодно и когда угодно, но на API будут завязаны программы сторонних разработчиков, так что его внешний интерфейс меняться не должен.
Чтобы не дублировать код — выности его в модели и в модули, код самого контроллера должен быть минимальным.
1. Делаем структуру апи
2. Суем в эту структуру вызовы существующих методов
3.!!!
4. Радуемся рабочему результату
…
n. При изменении структура остается такой же, меняем вызовы существующих методов на измененный и доведенный до ума вариант специально для апи.
А вообще Вы спрашиваете странные вещи:
— Дублировать ли методы в API, с учетом, что предполагается дальнейшая активная разработка web
— Переделать веб-часть для прямой работы с API, в дальнейшем заниматься только разработкой API
Это выглядит как: делать ли мне сайт или забить и делать только апи. Вам нужен сайт? Или нужен только апи?
Яркий пример twitter, у них есть API они разрабатывают его. Их веб-интерфейс это просто одно приложение для API, в таком ключе. Окей, общий смысл понял
Ну я имел ввиду что для начала чтоб не тратить много сил на изменение сайта просто придумать оболовку вменяемую, и в нее запихнуть текущие функции. А затем уже при желании менять те внутренности нового апи которые не нравятся/тормозят. Так будет быстрей, и даст времени чтоб подумать как в дальнейшем изменить все качественно.
А не будет лучше изначально дописать враппер для API, и в случае обращения с API выдавать json/xml, в случае обращения с сайта отдавать html? В дальнешем превести это всё в вид только json и заставить сайт с ним работать. Действительно беспокоит необходимость поддержания сразу двух веток дублированного, большей частью, кода, при условии, что сейчас идет активная разработка. Может подскажите, какие могут быть с этим проблемы (совмещением одно с другим). Возможно, просто у меня замылился взгляд на всё это, совет со стороны, очень поможет