Автор оригинала: Sacha Durand Saint Omer.
В этой статье мы собираемся пройти шаг за шагом, что требуется для получения Пользователь
Объекты из JSON API в SWIFT3, используя ☁️ws библиотека.
Что такое WS?
WS это быстрое библиотека для написания Краткий сетевой код.
WS Используйте силу других библиотек, чтобы создать сеть ветерок. Под капотом он использует великий AlamoFire Для HTTP-запросов 🎬. тогда для популярной концепции обещания и 🏹arrow для простого разбора JSON.
Эта архитектура модульная нарочно, так что каждый «кирпич» DOE_S_ Одна вещь и делает это хорошо.
Если вы хотите пойти глубже в внутреннюю работу WS. , вы можете оформить заказ:
- AlamoFire на Github
- JSON PARSING с 🏹arrow и связанные с этим статья
- Обещания с Then и связанные с этим статья
Давайте вернемся, пожалуйста, мы?
Установка
Если вы хотите следить за этим руководством на XCode, убедитесь, что создайте новый проект iOS и установить WS. Как объяснено здесь С Обе карнаген и какоаподы поддерживаются
Отключение безопасности приложений (ATS)
Здесь мы будем использовать великую Jsonsholder Сервис, чтобы получить несколько пользователей JSON https://jsonplaceholder.typicode.com/users
Чтобы иметь возможность обработать запросы к этому домену, нам нужно обходить настройки безопасности приложений в наших .plist
файл так:
⚠️ Иметь в виду, что эта настройка ATS предназначена для тестирования цели и не предназначена для производства приложения _
Ремесло нашего API
Начните с создания нового SWIFT файла с именем Api.swift.
Это инкапсурует весь наш код API:
import ws import then // Needed to import Promise Type import Arrow // Needed to import JSON Type let api = Api() // Define global api struct Api { // Connect to the base URL private let ws = WS("http://jsonplaceholder.typicode.com") // Declare your route and what you want back, here some JSON func getUsers() -> Promise{ return ws.get("/users") } }
И теперь вы можете позвонить вашему API с контроллера просмотра, как это:
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() api.getUsers().then { json in print(json) } } }
Вау, это было легко, не так ли?
Да, но большую часть времени, в ваших приложениях, вы захотите использовать пользовательские быстрые модели. Хорошо, так что теперь мы собираемся увидеть дальше, как мы переводим JSON в наш приятный User.swift
модель.
Настраивать Модель разбор
Создать User.swift
Файл и добавьте Имя пользователя имущество.
struct User { var username = "" }
Создать Пользователь + json.swift
Файл и сопоставить ключ json к вашей модели модели:
import Arrow extension User: ArrowParsable { mutating func deserialize(_ json: JSON) { username <-- json["username"] } }
Это все, что нужно, чтобы описать, как разбирать Пользователь
объект на данный момент.
Теперь измените предыдущий API.SWIFT
Файл и сделать функцию GetUsers () возвращает Обещание <[Пользователь]>
вместо Json.
import ws import then let api = Api() struct Api { private let ws = WS("http://jsonplaceholder.typicode.com") func getUsers() -> Promise<[User]> { // We want [User] back! return ws.get("/users") } }
Да! Это единственное, что нужно изменить! Сейчас WS. автоматически попытается разобрать ответ в массив Пользователь
Объекты 🎉!
Давайте использовать его в нашем контроллере тогда!
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() api.getUsers().then { users in for u in users { print(u.username) } } } }
Бонус — обрабатывать ошибки
Как вы знаете, все не всегда работают, как мы намерены И нам нужно подготовить себя к худшему. Так что, если запрос не удается, например,?
Вот где приходит сила обещаний:
api.getUsers().then { users in // strongly typed [User] ! }.onError { e in print(e) // Handle any networking error that might happen }.finally { print("Whatever happens I'll be executed ") }
Просто цепи .onerror
Блок там И это будет призвано с соответствующей причиной, когда случается что-то не так!
Заключение
С примерно 20 строк кода у вас есть:
- Подключен к далеку JSON API
- Получил JSON обратно
- Проанализировал JSON в ваши модели
- Способ обрабатывать сбои, когда худшее происходит
Это так же, как я думаю,
Конечно, намного больше WS Можно сделать: обрабатывать параметры, вложенные модели, пост, поставить, удалить запрос, умножать загрузки, прогресс, запросы нагрузки … Но это не имеет возможности этой статьи.
Больше доброта ❤️.
☁️ws является частью серии легких библиотек, направленных на разработку IOS Apps A ветер. На Свежевы Мы процветаем для простых API, так что идите о проверке наших репо счастливый кодирование
- JSON PARSING: 🏹arrow.arrow.
- Обещания: 🎬🎬en
- Просмотр макета: 🍃stevia.
Особая благодарность Максконовава и Yanickdot для корректора
Если вам понравилась эта статья, нажмите сердце ❤ ниже, который много значит для нас!
Первоначально опубликовано здесь
Оригинал: «https://www.codementor.io/@sachadso/swift-write-concise-networking-code-with-ws-ddjbdgm8q»