Перейти к содержимому

В производственной среде SwiftUI: масштабируемая сетевая архитектура с использованием Async Await.

Karin Prater

0:00 / 0:00

В производственной среде SwiftUI: масштабируемая сетевая архитектура с использованием Async Await.

4 239 просмотров · 4 месяца назад
Karin Prater
24 тыс. подписчиков
4 239 просмотров · 4 месяца назад
В этом уроке я создам масштабируемый сетевой слой для приложения электронной коммерции на SwiftUI, используя API DummyJSON. Вместо того чтобы копировать и вставлять URL-запросы повсюду, мы создадим чистую архитектуру с многократно используемыми компонентами, протокольно-ориентированным проектированием и надлежащей обработкой ошибок. Что мы рассмотрим: Базовые запросы URLSession и декодирование JSON Создание универсальной структуры клиента API (совместимой с Sendable) Пользовательская обработка ошибок API (коды состояния, отмена, сообщения сервера) Протокол конечных точек для гибкой, модульной генерации запросов Шаблон сервисного уровня с внедрением зависимостей на основе протоколов Моки-сервисы для предварительного просмотра и тестирования SwiftUI Лучшие практики параллельного программирования в Swift (ключевое слово concurrent, изоляция акторов) Организация проекта для будущей модульности (MVVM) Объяснение ключевых архитектурных решений: Почему протоколы лучше, чем перечисления для конечных точек Почему структуры лучше, чем классы для клиента API Почему значения по умолчанию в Approachable Concurrency могут создавать больше проблем, чем решать Где провести границу между ViewModel, сервисами и акторами Как сделать ViewModel более лаконичными, вынося чистую логику в сервисы Это часть серии — далее мы свяжем это с бесконечными списками прокрутки, поиском, фильтрацией и пагинацией. 00:00 Обзор сетевых целей 01:11 Настройки параллельного доступа Xcode 03:14 Настройка ViewModel для продуктов 04:21 Моделирование ответов API 06:37 Первый тест асинхронной выборки 08:06 URLRequest и коды состояния 09:52 Выборка категорий 11:35 Обобщенная выборка и ApiError 14:20 Стратегия отмены и обработки ошибок 20:19 Извлечение структуры APIClient 23:32 Переходы акторов и ключевое слово Concurrent 25:05 Подключение данных к списку SwiftUI 27:38 Подготовка к мокам с использованием протоколов 29:39 Протокол сервиса продукта 30:33 Моки для предварительного просмотра 32:20 Отображение ошибок в пользовательском интерфейсе 34:41 Настройка протокола конечной точки 38:26 Создание запроса с помощью URLComponents 40:20 Конечные точки продуктов и категорий 43:35 Универсальная конечная точка для получения данных от клиента 50:42 Пользовательское сопоставление для каждой конечной точки 53:09 Сервисы против ViewModel 55:43 Очистка проекта и дальнейшие шаги 📁 Файлы проекта по ссылкам ниже 🛠 Создано с помощью Xcode 26.4 | Swift 6 | SwiftUI https://school.swiftyplace.com/f/swif... Ссылки документация API https://dummyjson.com интервью с Мэттом    • Swift Concurrency Explained with Matt Mass...   Если вам понравилось то, что вы узнали, и вы хотите увидеть больше, посмотрите один из моих курсов! 👩🏻‍💻 Курс по компоновке SwiftUI https://learn.swiftyplace.com/swiftui... ------------------ Что посмотреть дальше ------------------- 👉 О Карин Пратер Привет, меня зовут Карин Пратер — я iOS-разработчик и преподаватель, помогающий вам освоить Swift, SwiftUI и разработку реальных iOS-приложений. Я создаю понятные уроки по архитектуре SwiftUI, UIKit, Combine, Core Data и тому, как создавать приложения для iPhone и macOS, используя лучшие практики. Подписывайтесь, чтобы получать еженедельные подробные обзоры Xcode, шаблонов проектирования Swift и всего, что вам нужно для роста как Apple-разработчика. Новые видео каждую неделю по разработке iOS, SwiftUI и масштабируемой архитектуре приложений. #SwiftUI