Практически любое мобильное приложение взаимодействует с серверами через их API. Перед разработчиком в таком случае стоит задача реализовать сетевой слой своего приложения. Провайдеры того или иного API разрабатывают его интерфейс, зачастую, одинаково, но бывает и так, что API имеет свою специфику. Например, API Вконтакте при какой-либо ошибке в обращении к их методам не отображает это в статус коде ответа, а отображает это в самом теле ответа как JSON по ключу «error»: то есть, во-первых, вы не поймете по статус коду прошел ли запрос удачно, а во-вторых, не узнаете, какая произошла ошибка пока не измените логику обработки ответа. Таким образом, перед разработчиком лежит задача реализации достаточно гибкого слоя, контроль над которым можно осуществлять на разных этапах работы с сервером.
Я хочу рассказать, как можно построить достаточно гибкий сетевой слой.
Вот как это будет выглядеть в итоге:
import UIKit
class ViewController: UIViewController {
let service: WallPostable = BasicWallAPI()
@IBOutlet weak var textField: UITextField!
@IBAction func postAction() {
service.postWall(with: textField.text!)
}
}
Читать дальше →
Гибкий сетевой слой в iOS-приложении
Source: habrahabr
