@artem-Kolyadin

Как правильно оганизовать взаимодействие с server API применительно к архитектуре VIPER?

Всем доброго времени суток!
Пишу приложение на Swift, в котором будет очень много запросов к серверу через API. Подскажите пожалуйста, как правильно разместить и организовать все это применительно к архитектуре VIPER. Более конкретно: По идее interactor обращается к сервису с запросом на некие данные? Как правильно организовать этот класс сервиса? Синглтон или просто набор методов? Нужно ли писать протокол для этого сервиса, как для других элементов модуля VIPER? Какие есть bad/good practices по работе с серврным API в Swift через Alamofire(да по идее без разницы, хоть нативом)?
  • Вопрос задан
  • 369 просмотров
Решения вопроса 1
@Statusgman
iOS developer
Сервис лучше закрывать протоколом - это позволит подменить его реализацию, если потребуется (мок-сервис сделать, например). Синглтонами лучше не увлекаться: если использовать менеджер зависимостей это не понадобится.
Сервис может содержать следующие зависимости:
- Transport (RequestManager) - сущность, которая выполняет запросы к API. Может работать с Alamofire, например.
- Parser - сущность, которая парсит JSON в PONSO/NSManagedObject
- Cache - кэширование данных в БД, напимер в CoreData.

Получается, что сервис - это логика работы совокупности транспорта, парсера и кэша. Если объекты получаемые с API однообразны, можно сделать generic сервис для получения различных сущностей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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