Серия статей о работе с сетью состоит из трёх частей:
- Часть 1 — Базовые запросы (эта статья)
- Часть 2 — Протокол Codable
- Часть 3 — Оптимизация файлов и кода
Если говорить коротко, то работа с сетью сводится к отправке запросов (request) и получению ответов (response).
Request
Запрос — это объект, содержащий всю необходимую информацию для того, чтобы сервер точно понял, какую информацию вы хотите запросить. Структура запроса может содержать следующие пункты:
Request
Запрос — это объект, содержащий всю необходимую информацию для того, чтобы сервер точно понял, какую информацию вы хотите запросить. Структура запроса может содержать следующие пункты:
- Header (заголовки запроса) — техническая информация, не имеющая отношения к сути запроса. К хедерам часто относят информацию о модели айфона, версии iOS, текущей версии приложения и т.д.
- Метод запроса, отражающий то, какие действия вы собираетесь произвести. GET ( получить данные), POST (создание данных), PUT (обновление данных), DELETE (удаление данных) и др.
- URL (адрес запроса) — адрес, по которому вы собираетесь отправить запрос. Например, чтобы получить список ваших подписчиков VK, нужно отправить запрос по адресу:
https://api.vk.com/method/users.getFollowers
- Параметры запроса — информация, уточняющая ваш запрос. Мы можем добавить параметр user_id к предыдущему запросу:
https://api.vk.com/method/users.getFollowers?user_id=1
и такой запрос вернет список всех подписчиков пользователя с user_id=1 (то есть Паши Дурова).
Response
Ответ от сервера приходит в формате JSON, который представляет собой совокупность пар ключ-значение. Звучит сложно, но на деле все очень просто. Вот пример того, в каком формате приходит краткая информация о пользователе:
Ответ от сервера приходит в формате JSON, который представляет собой совокупность пар ключ-значение. Звучит сложно, но на деле все очень просто. Вот пример того, в каком формате приходит краткая информация о пользователе:
{
'id':210700286,
'first_name':'Николай',
'last_name':'Иванов'
}
В данном примере имеем ключи id, first_name и last_name, для каждого из которых есть свое значение.
Создание и отправка запроса на Swift
Пример 1
Создание и отправка запроса на Swift
Пример 1
var request = URLRequest(url: URL(string: “https://api.vk.com/method/auth.restore?phone=79999999999")!)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
print(String(decoding: data!, as: UTF8.self))
print(response)
print(error)
}
task.resume()
Сначала мы создаем объект URLRequest с URL, необходимым для восстановления доступа к страничке VK:
https://api.vk.com/method/auth.restore?phone=79999999999
Далее происходит создание задачи (task) по отправке этого запроса. В замыкании мы получаем от сервера три сущности — data, response и error. Распечатав эти параметры, мы увидим ответ сервера. С помощью task.resume() происходит запуск задачи на отправку нашего запроса.
Попробуйте запустить этот код в любом месте, и вы получите ответ от сервера VK. Ответ даст вам понять, что запрос составлен неверно, т.к. в запросе не указана версия API. Для нас это неважно, так как основная цель урока заключается в том, чтобы связаться с любым сервером и получить от него ответ. У нас получилось! А с тонкостями работы с API VK можно ознакомиться в официальной документации.
Пример 2
Выполните следующий код:
Попробуйте запустить этот код в любом месте, и вы получите ответ от сервера VK. Ответ даст вам понять, что запрос составлен неверно, т.к. в запросе не указана версия API. Для нас это неважно, так как основная цель урока заключается в том, чтобы связаться с любым сервером и получить от него ответ. У нас получилось! А с тонкостями работы с API VK можно ознакомиться в официальной документации.
Пример 2
Выполните следующий код:
var request = URLRequest(url: URL(string: “https://v2.jokeapi.dev/joke/Any")!)
request.httpMethod = “GET”
request.allHTTPHeaderFields = [“AuthToken”: “null”]
let task = URLSession.shared.dataTask(with: request) { data, response, error in
print(String(decoding: data!, as: UTF8.self))
}
task.resume()
Здесь мы производим почти аналогичные действия, но после создания запроса мы также настраиваем метод и заголовки запроса. Запустите этот код; в консоли вы получите рандомную шутку от сервера. В моем случае ответ выглядит вот так:
{
“error”: false,
“category”: “Misc”,
“type”: “single”,
“joke”: “My wife is really mad at the fact that I have no sense of direction.\nSo I packed up my stuff and right.”,
“flags”: {
“nsfw”: false,
“religious”: false,
“political”: false,
“racist”: false,
“sexist”: false,
“explicit”: false
},
“id”: 201,
“safe”: true,
“lang”: “en”
}
В JSON-файле содержится как сама шутка, так и некоторые дополнительные сведения. Например, из ответа мы видим, что шутка не является религиозной, политической, расистской и т.д.
Навыки работы с API можно отработать на вот этих сервисах, а если что-то не получается, то проблемой можно поделиться в нашем чате.
Всем пока!
Навыки работы с API можно отработать на вот этих сервисах, а если что-то не получается, то проблемой можно поделиться в нашем чате.
Всем пока!