Задать вопрос
humiliation
@humiliation
Чем больше знаю - тем больше дурак

Как реализовать в yii2 веб-интерфейс + api для приложения?

Всем привет!

Подскажите, пожалуйста, правильное направление в реализации следующего функционала:

есть, в общем-то, обычное приложение учета товаров, у нее там свои контроллеры, модули, модели, все как должно быть. И тут же к ней нужно реализовать API для различных целей.

Я сначала легко себе это представлял, но теперь совсем запутался.

У меня есть несколько вариантов: отдельный апи контроллер + подтягивать нужные мне модули. Т.к. весь основной функционал уже готов, я буду его дублировать в апи контроллере, вызывая нужные методы. Минусы: дубль кода, Плюсы: независим от основной реализации.

Либо же писать свой модуль, который уже будет взаимодействовать внутри с другим модулями и контроллерами. Минус здесь в том, что при обновлении одной модели нужно будет вносить правки в двух местах. Плюсы те же, только все это обернуто аккуратно в модуль.

Может, чего-то не учел или не знаю. Подскажите, как все это правильно реализовать и не получить потом на выходе отборное спагетти:)

п.с. ссылки приветствуются
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Maksclub
@Maksclub
maksfedorov.ru
весь основной функционал уже готов, я буду его дублировать в апи контроллере, вызывая нужные методы

Именно поэтому все и говорят "тонкие контроллеры"
Тк у вас логика в контроллерах, то да -- дублировать
Если бы разнесли нормально по сервисам -- то контроллеры на беке и апи просто бы пользовали их и были по сути расходниками
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
берем advanсed шаблон, api - это отдельное app, свой конфиг, свой контроль доступа, response в виде json и т.д.
код при этом дублироваться не должен если все верно сделано. Как сказал Максим Федоров толстая должна быть модель, тогда Вы ее повторно без проблем используете в Ваших обычных web контролерах и rest контролерах
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы