Как спроектировать сетевой слой на URLSession: Endpoint, клиент, ошибки?
Суть
Хороший сетевой слой разделяет три ответственности: описание запроса (Endpoint — значение без логики выполнения), клиент, который превращает описание в URLRequest, выполняет его и валидирует ответ, и типизированные ошибки, по которым UI решает, что показать. Сквозные вещи — авторизация, логирование, общие заголовки — живут в интерцепторах, а не копируются в каждый эндпоинт.
Критерий качества: новый запрос добавляется одной декларацией, а клиент тестируется без сети и без изменения продового кода.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep