Разделите построение URLRequest, выполнение URLSession и декодирование ответа. Метод, query, headers и body должны быть явными частями контракта запроса.
// Сервис который отправляет запросы (get/post), url, формирование запроса в зависимости от семантики (decode/encode)
Разделите построение 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 может быть невозможно вывести.