Swift - напишите краткий сетевой код с помощью WS☁️

В этой статье мы шаг за шагом рассмотрим, что требуется для получения User объектов из JSON Api в Swift3 с использованием библиотеки ☁️ws.

Что такое ws?

ws - это быстрая библиотека для написания краткого сетевого кода.

ws использует возможности других библиотек, чтобы упростить работу в сети. Под капотом он использует отличный Alamofire для HTTP-запросов, then для популярной концепции обещаний и Arrow для простого анализа JSON.

Эта архитектура специально построена по модульному принципу, чтобы каждый «кирпичик» был одним и делал это хорошо.

Если вы хотите глубже изучить устройство ws, вы можете оформить заказ:

Давай вернем 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 за вычитку :)

Если вам понравилась эта статья, нажмите в сердце ❤ ниже, это очень много значит для нас! :)