Что такое HTTP, API, REST API
HTTP
HTTP (HyperText Transfer Protocol) - это протокол, который используется для передачи данных в сети Интернет. Он позволяет веб-серверам и веб-клиентам (например браузерам) обмениваться информацией между собой c поомщью запросов. Запрос может содержать такие данные, как адрес (URL), которую вы хотите открыть, и параметры для поиска или фильтрации, а также тело запроса и заголовки. Сервер обрабатывает этот запрос и отправляет обратно ответ, который может содержать HTML-код страницы, изображения, видео и другие данные.
Из чего состоит HTTP запрос:
Метод - Если представить HTTP запрос в виде объекта ООП, то у него тоже окажутся методы, куда остальные параметры запроса передаются как аргументы. Всего существует 9 методов, но мы подробнее разберем только 4 основных:
GET - метод получения информации. Когда вы открываете веб-страницу, ваш браузер отправляет GET запрос на сервер с помощью HTTP и в ответ на него получает HTML страницу, CSS файлы и тд.
POST - метод передачи информации на сервер. Каждый раз, когда вы заполняете форму регистрации или какой-либо другой ввод, который сервер должен сохранить у себя, сайт отправялет с помощью HTTP POST запрос.
DELETE - метод для удаления данных. Например, вы решили на музыкальной стриминг платформе удалить песню из вашего плейлиста. Сайт или мобильное приложение отправит с помощью HTTP DELELTE запрос.
PUT - метод обновления данных. Например, вы захотели изменить профиль в социальной сети, то сайт отправит на сервер PUT запрос.
Адрес - адрес сайта вы каждый раз вводите в вашей строке браузера для того, чтобы на него зайти. Сам адрес состоит из нескольких компонентов:
Протокол - HTTP или HTTPS (подробнее об HTTPS будет в дополнительных материалах)
Домен - название сайта, например
ya.ru
,google.com
и тд. На самом деле серверное приложение понятие не имеет какой у него домен. Домен служит для того, чтобы ваш браузер или приложение обратилось в некий сервис под названием DNS, запросило бы у него IP адрес и отправило по этому IP адресу ваш запросОтносительный путь - та часть запроса, которая следует после домена. Уже непосредственно эта часть запроса обрабатывается серверным приложением
Параметры запроса - параметры передаются после знака
?
в конце относительного пути. Параметр выглядит как ключ=значение и передать можно несколько параметров разделяя их символом&
, параметры не уникальные по ключу, можно передевать один и тот же параметр несколько раз или один раз, но значение через запятую?key=value1,value2
Заголовки - чаще всего их называют родным английским названием Headers. По своей сути они похожи на параметры запроса, тоже поставляются в формате ключ - значение, только в отличии от параметров они не видны пользователю в строке, а отправляются в специальном месте для того, чтобы обезопасить передачу их значений, так как нигде снаружи они не видны.
Хорошо. Допустим наше серверное приложение получило этот запрос, обработало и отправило ответ. Из чего же тогда состоит HTTP ответ ?
Код ответа. Скорее всего вы сталкивались с ними ранее, когда открывали ресурс с неизвестной страницей и видели сообщение
404 Not found
. 404 - это один из таких кодов. Они служат как сигнал для браузера или другого серверного приложения о статусе ответа на ваш запрос. Наиболее часто встречающиеся статусы:404 - не найдено
200 - все хорошо
500 - ошибка на стороне сервера
400 - ошибка на стороне клиента
403 - доступ запрещен
Заголовки. Точно такие же заголоовки как и у запроса, которые служат для передачи мета информации в формате ключ/значение
Тело - основная часть ответа на запрос, которая содержит полезную информацию. Это может быть как HTML файл, так и текст в формате JSON, XML или просто текст без какого либо формата.
Как это выглядит на живом примере ?
Допустим мы решили открыть в браузере страницу youtube конкретного видеоролика, например такую https://www.youtube.com/watch?v=C_QZtajkDf0
. Что будет происходить ?
Браузер разменяет у DNS провайдера адрес страницы
youtube.com
на IP адрес сервера на котором расположено серверное приложение youtube'аБраузер отправит GET запрос на сервер по полученному IP адресу и передаст ему следующую информацию:
Что ему необходимо содержимое по относительному адресу
/watch
Что ему необходимо видео с кодовым названием
C_QZtajkDf0
с помощью параметраv=
Если вы авторизованы, то в хеддерах может также передаваться метаинформация, которая поможет серверу распознать, что вы это вы.
После того как сервер обработает запрос, он отдает результат в виде HTTP кода 200, обозначащий, что запрос успешно обработан, а также тело ответа в виде HTML страницы
API
Многие ошибочно считают, что API это термин относящийся только к сети, но это не совсем так. API это конечная точка взаимодействия между клиентом и программой. Клиентом может быть как человек, так и другая программа.
Например, при использовании сторонних библиотек вы взаимодействуете с ее объектами, которые скрывают внутри себя порой оргомнейший функционал. Для того, чтобы вам было удобно этим функционалом пользоваться, его скрывают за объектами и функциями. Эти самые объекты и фцнкции - это и есть API.
В разработке видеоигр вы, возможно слышали про такой термин как DirectX. Directx это тоже API, но для взаимодействия с более низким уровнем компьютера в виде процессора или видеокарты.
REST API
REST API это одна из вариаций взаимодействия программ через средства сети. Работает оно по такому же принципу как и браузер, только в качестве ответа возвращается текстовый ответ в формате XML или JSON (в современной разработке в 99% случаев будет встречаться именно JSON). REST API появился по большому счету благодаря популиризации мобильных устройств, так как у мобильного приложения нет особо других способов взаимодействовать с сервером, в отличии от браузера.
Для того, чтобы посмотреть на примеры взаимодействия с REST API, вам будет необходимо установить приложение-клиент с помощью которого вам будет удобнее всего взаимодействовать с такими приложениями. Самым простым способом будет установить расширение VSCode Thunder Client
.
После установки в вашем меню слева появится иконка в виде молнии. Нажмите на нее.
Попробуем взаимодействовать с популярным REST API приложением для получения информации о погоде.
Для того, чтобы отправить HTTP запрос на REST API вам необходимо:
Нажать на кнопку
New Request
В появившемся окне вверху вы увидете строку для ввода адреса, а также для выбора HTTP метода
Введите адрес
https://api.open-meteo.com/v1/forecast
и выберете методGET
В разделе
Query Parameters
добавляются параметры URL адресаДобавьте следующие параметры
latitude = 55.75 - параметр отвечающий за широту
longitude = 37.62 - параметр отечающий за долготу
forecast_days = 1 - на какое кол-во дней необходимо получить прогноз
hourly = temperature_2m - указываем, что хотим в ответе получить температуру
hourly = rain - указываем, что хотим получить в ответе кол-во дождевых осадков в мм
Отправляем запрос, нажав на кнопку
Send
Теперь посмотрим на ответ, который пришел вам в правой части. Как ранее и говорилось, частой практикой является использование формата JSON для передачи информации. В нем мы обнаружим:
Наши широту и долготу, которые мы вводили
hourly_units - единицы измерения
hourly - данные, которые мы просили API нам предоставить с разбивкой по часам.
Более подробно с возможностями API вы можете ознакомиться в официальной документации
Задание weather_info
в рамках данной главы создавать отдельную директорию и файлы не понадобится
Изучите документацию по API для определния координат
Составьте запрос для получения координат города Астана, Казахстан
Дополнительный материал
Last updated