Сетевой сервис должен отдельно формировать запрос, выполнять транспорт и декодировать ответ. GET/POST, query и body задаются явным описанием endpoint.
// Сервис, который отправляет запросы (get/post), url, формирование запроса в зависимости от семантики (decode/encode)
Сетевой сервис должен отдельно формировать запрос, выполнять транспорт и декодировать ответ. GET/POST, query и body задаются явным описанием endpoint.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сетевой сервис должен отдельно формировать запрос, выполнять транспорт и декодировать ответ. GET/POST, query и body задаются явным описанием endpoint.
URL собирают через URLComponents, параметры — URLQueryItem; JSON-body кодируют через Encodable. После URLSession проверяют HTTP-статус и только затем декодируют ожидаемый Decodable-тип. Для пустого ответа нужен отдельный путь, а не попытка декодировать JSON из нуля байтов.
Инъекция URLSession и декодера позволяет изолированные проверки без реального сервера. Обрабатывайте отмену, таймауты и ошибки кодирования; не записывайте токены в логи. Автоматические retries допустимы лишь с учётом идемпотентности операции, особенно для POST.