13.4 Что такое API?
Две программы
API - это набор правил и инструкций, которые позволяют двум программам взаимодействовать друг с другом.
Примером двух программ могут послужить платформа Nodul и сервис OpenWeather, предоставляющий данные о погодных условиях.
Плюс API заключается в том, что две программы могут обмениваться данными и вызывать функции друг друга, не зная, как именно эти функции реализованы. Если платформе Nodul (или ее пользователю) понадобиться уз нать текущую погоду, то достаточно знать, что сервис OpenWeather предоставляет такую информацию. Знать, как именно эта информация формируется или вычисляется, необязательно.
Программы, предоставляющие API, обычно ведут документацию, чтобы пользователи могли разобраться в том, как именно использовать то или иное API.

Запрос - ответ
Вся коммуникация между программами строится на системе запрос-ответ.
Одна программа отправляет запрос к другой программе, указывая необходимые параметры и действия, которые требуется выполнить. В нашем случае информация о погоде необходима платформе Nodul, и с помощью узла HTTP Request может быть сформирован запрос к сервису OpenWeather.
Запрос содержит информацию о том, что именно нужно сделать. Например, получить данные, обновить данные или выполнить какие-то операции. Он также может содержать параметры, которые определяют, какие конкретные данные или действия требуются.
Запросы могут быть разных типов. Тип запроса определяет его возможности, например:
- GET запрашивает информацию от программы. Например, можно отправить GET запрос, чтобы получить список товаров на сайте.
- POST отправляет данные программе для обработки. Например, при оформлении заказа можно отправить POST запрос с информацией о товарах и адресе доставки.
- PUT обновляет данные в программе. Например, можно отправить PUT запрос, чтобы изменить информацию о своем профиле.
- DELETE удаляет данные из программы. Например, можно отправить отправить DELETE запрос, чтобы удалить свой аккаунт на сайте.
Узел HTTP Request, предназначенный для формирования запроса, повторяет в своих полях параметры этого запроса. Т.к. информацию о погоде необходимо только получить и регистрация для получения информации не требуется, то может быть использован GET запрос самой простой структуры:

- (1) URL - точка, на которую будет отправлен запрос, в том числе город, погоду в котором необходимо получить;
- (2) Метод запроса - GET.

Ответ, в свою очередь, содержит результат выполненной операции или запрошенные данные. Он может содержать статус, а также другую информацию, такую как данные или сообщения.
Статусы - это стандартные коды, и они помогают интерпретировать результат запроса и определить дальнейшие действия. Вот некоторые из наиболее распространенных статусов:
- 2xx - это успешные ответы, которые указывают на успешное выполнение запроса.
- 3xx - эти ответы указывают на перенаправление запроса или требуют дополнительных действий со стороны клиента.
- 4xx - эти ответы свидетельствуют о проблемах с запросом со стороны клиента.
- 5xx - эти ответы указывают на проблемы со стороны сервера при выполнении запроса.
Запустим узел HTTP Request и посмотрим, какой ответ вернет на запрос сервис OpenWeather.

Как в нашем примере, ответы чаще всего представляют из себя JSON объекты. Они отличаются от простого текста только тем, что информация в них структурирована (основная информация содержится в теле body) и присутствует статус ответа. Например, 200 это успешный ответ, который говорит о том, что запрос был выполнен успешно, и программа отправляет нужную информацию обратно).
Обработка ответа
Часто сервисы предоставляют данные с избытком, как в нашем примере. Нам необходимо было получить только температуру, а мы получили еще и множество другой информации (облачность, координаты, видимость, ветер и т.д.).
{
"base": "stations",
"clouds": {
"all": 100
},
"cod": 200,
"coord": {
"lat": 51.5085,
"lon": -0.1257
},
"dt": 1707249005,
"id": 2643743,
"main": {
"feels_like": 284.8,
"humidity": 88,
"pressure": 1004,
"temp": 285.24,
"temp_max": 286.37,
"temp_min": 284.42
},
"name": "London",
"sys": {
"country": "GB",
"id": 2075535,
"sunrise": 1707204717,
"sunset": 1707238628,
"type": 2
},
"timezone": 0,
"visibility": 7000,
"weather": [
{
"description": "overcast clouds",
"icon": "04n",
"id": 804,
"main": "Clouds"
}
],
"wind": {
"deg": 230,
"speed": 7.72
}
}
Это не является проблемой, и можно либо поискать в документации OpenWeather другой “вариант” API, либо обработать поступившие данные, вычленив из них нужные с помощью узла JavaScript.
Авторизация
Программы могут предоставлять API доступное всем пользователям, что позволяет использовать их функциональность без необходимости авторизации.
Однако многие программы требуют авторизации для доступа к их функциональности. Это позволяет управлять доступом к конфиденциальной информации, защищать данные пользователей и предотвращать злоупотребление сервисом. После авторизации пользователь может отправлять запросы к API программы, получать информацию, обновлять данные и делать другие операции в соответствии с правами доступа, предоставленными ему.
Итог
Итогом взаимодействия программ по API может быть обмен данных, выполнение определенной функции или получение ответа на запрос. В нашем примере при использовании API погодного сервис а мы отправили запрос о погоде в определенном городе и получили в ответ среди прочей информации текущую погоду в этом городе.