Swift - напишите краткий сетевой код с помощью WS☁️
В этой статье мы шаг за шагом рассмотрим, что требуется для получения User
объектов из JSON Api в Swift3 с использованием библиотеки ☁️ws.
Что такое ws?
ws - это быстрая библиотека для написания краткого сетевого кода.
ws использует возможности других библиотек, чтобы упростить работу в сети. Под капотом он использует отличный Alamofire для HTTP-запросов, then для популярной концепции обещаний и Arrow для простого анализа JSON.
Эта архитектура специально построена по модульному принципу, чтобы каждый «кирпичик» был одним и делал это хорошо.
Если вы хотите глубже изучить устройство ws, вы можете оформить заказ:
- Аламофайр на гитхабе
- Разбор JSON с 🏹Стрелкой и связанной с ней статьей
- Обещания с 🎬then и связанной с ним статьей
Давай вернем JSON, ладно?
Установка
Если вы хотите следовать этому руководству по Xcode, обязательно создайте новый проект iOS и установите ws, как описано здесь, поддерживаются как Carthage, так и Cocoapods :)
Отключение безопасности транспорта приложений (ATS)
Здесь мы будем использовать отличный сервис JSONPlaceholder, чтобы привлечь некоторых пользователей JSON https://jsonplaceholder.typicode.com/users
Чтобы иметь возможность обрабатывать запросы к этому домену, нам нужно обойти настройки безопасности транспорта приложений в нашем .plist
файле следующим образом:
⚠️ B помните, что этот параметр ATS предназначен для тестирования и не предназначен для использования в производственном приложении :)
Создание нашего Api
Начните с создания нового файла Swift с именем Api.swift
, он инкапсулирует весь наш код, специфичный для API:
И теперь вы можете вызвать свой api из контроллера представления следующим образом:
Вау, это было легко, не так ли?
Да, но в большинстве случаев в своих приложениях вы захотите использовать пользовательские модели Swift. Хорошо, теперь мы посмотрим, как преобразовать JSON в нашу красивую User.swift
модель.
Настроить анализ модели
Создайте файл User.swift
и добавьте свойство username.
Создайте файл User+JSON.swift
и сопоставьте ключ JSON со свойством модели:
Это все, что сейчас нужно, чтобы описать, как анализировать объект User
.
Теперь измените предыдущий файл Api.swift
и заставьте функцию getUsers () возвращать Promise<[User]>
вместо JSON.
Да! Это единственное, что нужно изменить! Теперь ws автоматически попытается преобразовать ответ в массив из User
объектов 🎉!
Тогда давайте использовать его в нашем контроллере!
Бонус - обработка ошибок
Как вы знаете, не всегда все работает так, как мы планировали, и нам нужно готовиться к худшему. Так что, если, например, запрос не работает?
Вот где проявляется сила обещаний:
Просто добавьте туда .onError
блок, и он будет вызываться с соответствующей причиной всякий раз, когда что-то случится!
Вывод
Примерно 20 строк кода:
- Подключен к удаленному JSON Api
- Получил JSON обратно
- Разобрал JSON в ваших моделях
- Способ справиться с ошибками в худшем случае
Я думаю, это настолько лаконично, насколько это возможно :)
Конечно, ws может делать гораздо больше: обрабатывать параметры, вложенные модели, POST, PUT, запрос DELETE, многокомпонентные загрузки, прогресс, запросы Loadmore… Но это выходит за рамки данной статьи.
Больше добра ❤️
☁️ws является частью серии облегченных библиотек, призванных упростить разработку приложений для iOS . В freshOS мы предпочитаем простые API, так что просмотрите наши репозитории и счастливого кодирования :)
Отдельное спасибо maxkonovalov и Yanickdot за вычитку :)
Если вам понравилась эта статья, нажмите в сердце ❤ ниже, это очень много значит для нас! :)