// Сервис который отправляет запросы (get/post), url, формирование запроса в зависимости от семантики (decode/encode)

Разделите построение URLRequest, выполнение URLSession и декодирование ответа. Метод, query, headers и body должны быть явными частями контракта запроса.

Короткий ответ

Что ответить на собеседовании

Разделите построение URLRequest, выполнение URLSession и декодирование ответа. Метод, query, headers и body должны быть явными частями контракта запроса.

Подробный разбор

Ответ с пояснениями

Разделите построение URLRequest, выполнение URLSession и декодирование ответа. Метод, query, headers и body должны быть явными частями контракта запроса.

Для GET параметры обычно кодируют через URLComponents/URLQueryItem, а для JSON POST — через Encodable и JSONEncoder с подходящим Content-Type. После URLSession проверяют HTTPURLResponse и статус, затем декодируют Response: Decodable.

Ошибки транспорта, HTTP и декодирования сохраняют различимыми; отдельно поддерживают пустой ответ, отмену и таймаут. URLSession и decoder инъецируют для тестов. Не логируют токены и тела с личными данными. Для запроса без body нужен понятный overload или тип пустого тела, иначе generic Body может быть невозможно вывести.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее