TG Telegram Group & Channel
Мобильная разработка | United States America (US)
Create: Update:

Создаем идеальный сетевой слой в Swift

Пора распутать URLSession вызовы в вашем коде и навсегда избавиться от этой проблемы.

Вместо URLSession.shared везде — создаем NetworkClient протокол:

protocol NetworkClient {
func send<T: Decodable>(_ request: URLRequest) async throws -> T
}


URLProtocolStub позволяет перехватывать все запросы и возвращать mock-данные. Никаких реальных API в тестах!

Dependency Injection:

class UserService {
private let networkClient: NetworkClient
init(networkClient: NetworkClient) {
self.networkClient = networkClient
}
}


Что получаем:

• Один NetworkError enum вместо хаоса
• Легко подменяемые зависимости
• Async/await вместо completion handlers
• Код, который не стыдно показать коллегам

Создаем идеальный сетевой слой в Swift

Пора распутать URLSession вызовы в вашем коде и навсегда избавиться от этой проблемы.

Вместо URLSession.shared везде — создаем NetworkClient протокол:

protocol NetworkClient {
func send<T: Decodable>(_ request: URLRequest) async throws -> T
}


URLProtocolStub позволяет перехватывать все запросы и возвращать mock-данные. Никаких реальных API в тестах!

Dependency Injection:

class UserService {
private let networkClient: NetworkClient
init(networkClient: NetworkClient) {
self.networkClient = networkClient
}
}


Что получаем:

• Один NetworkError enum вместо хаоса
• Легко подменяемые зависимости
• Async/await вместо completion handlers
• Код, который не стыдно показать коллегам
👍125🔥5


>>Click here to continue<<

Мобильная разработка






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)