Я думаю, что этот вопрос слишком большой и сложный, чтобы на него можно было дать исчерпывающий ответ. Вы не сказали нам об API. Какой ввод это займет? Какой ответ?
Предположим, самый простой случай. Ваш API ожидает JSON объектов в качестве ввода и отвечает другим JSON объектом, содержащим запрашиваемую вами информацию.
Обычно я делаю такие задачи, используя NSURLRequest
.
let js = ["Username":username, "Password":password]
let session = URLSession.init(configuration: .default)
let url = URL(...)
var req = URLRequest.init(url: url, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 10)
req.httpMethod = "POST"
// Add some header key-value pairs
req.addValue(..., forHTTPHeaderField: ...)
...
let task = session.dataTask(with: request) { (data, response, error) in
guard error == nil else { return }
guard let responseData = data else { return }
let code = (response as! HTTPURLResponse).statusCode
// Checking for code == 200 states for authorised user. Generally log-in APIs should return some 4xx code if not allowed or non-authorised user.
if code == 200 {
// Now we try to convert returned data as a JSON object
do {
let json = try JSONSerialization.jsonObject(with: responseData, options: [])
// use your json object here, for example checking if contains the user number...
} catch {
// handle errors
}
}
}
task.resume()
Я закодировал это очень быстро, пожалуйста, проверьте правильность всего механизма!