Что такое API и как он работает
Простыми словами объясняем, как программы общаются между собой, и практикуем API-вызовы.


Иллюстрация: Катя Павловская для Skillbox Media

Евгений Кучерявый
Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Заходите вы на сайт с вакансиями и ищете работу бэкенд-разработчиком, а там почти в каждой вакансии написано, что нужно уметь работать с REST API, или SOAP API, или просто API. Что всё это значит и зачем нужно программисту? Давайте разбираться.
Что такое API
API (англ. Application Programming Interface — программный интерфейс приложения) — это набор способов и правил, по которым различные программы общаются между собой и обмениваются данными.
Все эти взаимодействия происходят с помощью функций, классов, методов, структур, а иногда констант одной программы, к которой обращаются другие. Это основной принцип работы API.
Допустим, вы покупаете билет в кино с помощью банковской карты. Во время покупки терминал обращается к API банка, который выпустил вашу карту, и отправляет запрос на оплату. А если вы заказываете такси через приложение, оно обращается к платёжной системе тоже через API.

Программный интерфейс похож на договор между клиентом и продавцом. Только клиентом выступает приложение, которому нужны данные, а продавцом — сервер или ресурс, с которого мы эти данные берём. В таком договоре прописываются условия того, как и какие данные может получить клиент.
API встречается практически везде:
- В языках программирования он помогает функциям корректно общаться друг с другом. Вызывающая функция должна соблюдать тип данных и последовательность параметров вызываемой функции.
- В операционной системе он помогает программам получать данные из памяти или менять настройки ОС. Поэтому, чтобы разрабатывать приложения под конкретную операционную систему, нужно знать её API.
- В вебе сервисы общаются друг с другом через программный интерфейс. Если API открытый, то официальную документацию по работе с ним публикуют создатели сервиса-источника. Так, например, выглядит документация Telegram.
Несмотря на то что термин довольно широкий, чаще всего в вакансиях речь идёт именно о третьем варианте.
Почему API называют интерфейсом
Интерфейс — это граница между двумя функциональными системами, на которой происходит их взаимодействие и обмен информацией. При этом процессы внутри каждой из систем скрыты друг от друга.
С помощью интерфейса можно использовать возможности разных систем, не задумываясь о том, как они обрабатывают наши запросы и что у них «под капотом». Например, чтобы позвонить, не обязательно знать, как смартфон обрабатывает нажатия на тачскрин. Важно лишь, что в гаджете есть «кнопка», которая всегда возвращает одинаковый результат в ответ на определённые действия.
Точно так же с помощью вызовов API можно выполнить определённые функции программы, не зная, как она работает. Поэтому API и называют интерфейсом.

Как API помогает писать надёжные программы
Обычно мы не знаем, как программы устроены внутри. Впрочем, нам иногда и не важно, как они работают. Поэтому программную реализацию называют «чёрным ящиком» и прячут за несколькими уровнями абстракций, чтобы пользователям было удобно ими пользоваться.
Уровни абстракции сильно ускоряют процесс разработки, потому что программист может использовать готовые функции API в других приложениях. Это обычная практика. Например, большинство операционных систем предоставляют свои API другим программам, чтобы они получили возможность:
- работать с файловой системой;
- отрисовывать графику;
- хранить данные;
- использовать сетевые возможности;
- воспроизводить аудио и так далее.
Windows, Linux или macOS сами определяют, какие функции нужно вызвать и какие параметры передать, чтобы выполнить те или иные действия. Всё это описывается в документации к API, с которым работают разработчики других программ.
Если какой-то API для облачных вычислений станет быстрее извлекать квадратный корень, то и все использующие его программы — от онлайн-калькуляторов до нейросетей — тоже начнут работать быстрее.
Почему API так популярны у программистов
Программные интерфейсы сервисов и библиотек позволяют разработчикам не изобретать велосипеды. Зачем писать код, когда можно воспользоваться готовым?
Вот какие возможности даёт API:
- Предоставляет доступ к готовым инструментам. Например, к функциям библиотеки для машинного обучения TensorFlow — они помогают быстро создать нейросеть, не тратя время на разработку инструментов с нуля.
- Повышает безопасность. API позволяет вынести в отдельное приложение функциональность, которая должна быть защищена. Так снижается вероятность некорректного использования этих функций другими программами.
- Связывает разные системы. Если вам нужно подключить к сайту платёжную систему или авторизацию через соцсети, без API не обойтись.
- Снижает стоимость разработки. Часто бывает, что дешевле воспользоваться платным API, чем создавать функциональность с нуля.
Стороннее API обычно безопасное, потому что над ним работает коммерческая организация или целое сообщество разработчиков. И конечно, с его помощью даже работа над сложными проектами становится проще и приятнее.

Какие функций могут входить в API
Никаких специальных правил или ограничений на набор функций для API нет. Разработчики включают в него те методы, которые, по их мнению, будут полезны для взаимодействия клиентских приложений с их сервисом.
Например, в API для анализа текстов будут функции поиска всех однокоренных слов, подсчёта количества союзов и выявления часто встречающихся словосочетаний.
Функции API могут решать не только утилитарные задачи конкретных приложений. Это может стать элементом маркетинга, когда доступ к API предлагается как отдельная услуга.

Как компании зарабатывают с помощью API
Компании — особенно те, которые разрабатывают сложные приложения, — часто предоставляют клиентам доступ к API своих продуктов. Например, создатели видеоредактора могут брать дополнительную плату за рендеринг видео на своих серверах. По API они принимают от клиентов все файлы и инструкции, а возвращают готовый ролик.

Например, «Яндекс» предоставляет платные API таких технологий:
- переводчика с машинным обучением;
- системы распознавания и синтеза речи;
- платформы облачных вычислений и так далее.
Популярные социальные сети тоже предоставляют доступ к своим API. Через них можно, например, создать игру для «ВКонтакте» или добавить на сайт авторизацию через Google.
При этом компании обычно не раскрывают принципы реализации своих интерфейсов, поэтому для программистов они остаются «чёрными ящиками».
Как происходит вызов функций API
Мы уже столько говорим об API, но так и не показали, как с ним работать. На самом деле здесь нет ничего сложного. Как вызывать функции конкретного API — описывается в документации, а принципы работы примерно одни и те же.
Вот пример вызова методов библиотек в языке Python:
# Подключаем библиотеку import numpy as np # Вызываем метод, который возвращает модуль числа -5 x = np.abs(-5) # Выводим переменную x print(x)
Если API предоставляет функции через интернет (Web API), нужно отправить на сервер HTTP-запрос с данными в формате JSON. Пример синтеза речи с помощью API Yandex.SpeechKit:
import requests import json # Помещаем в переменную API_URL адрес API API_URL = "https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize" # Помещаем в словарь data данные для отправки в API Yandex.SpeechKit data = < "text": "Привет! Это пример кода для статьи про API в Skillbox Media", "lang": "ru-RU", "speed": 1, "voice": "filipp", "emotion": "good" > # Преобразуем данные в строку в формате JSON json_str = json.dumps(data) # Отправляем данные на сервер и получаем ответ answer = requests.post(API_URL, json_str)
Можете запустить этот код и послушать результат.
Также бывают косвенные вызовы API — когда вызов происходит при участии посредника (другой функции или другого API). Например, когда пользователь нажимает кнопку «Обновить», он тоже взаимодействует с API браузера, но делает это не напрямую, а через графический интерфейс.
Что запомнить
API — это набор правил, по которым приложения или части программы общаются друг с другом. Его можно встретить везде — от операционных систем до веб-приложений. API позволяет разработчикам использовать готовые инструменты и не переживать за их реализацию. А ещё он делает приложения безопаснее и помогает связывать разные программы между собой.
API экономит время программистов и уменьшает расходы бизнеса на разработку.
Читайте также:
- 9 софт-скиллов идеального джуна: взгляд тимлида
- Все любят язык Go: почему он стал популярным и сколько зарабатывают разработчики
- Что такое тестирование программ и зачем оно нужно
Что такое API. Объясняем простыми словами
API (Application Programming Interface — программный интерфейс приложения, или интерфейс программирования приложений) — специальный протокол для взаимодействия компьютерных программ, который позволяет использовать функции одного приложения внутри другого.
Например, на сайте «Главред» есть сервис для улучшения текстов. Чтобы воспользоваться сервисом и проанализировать свой текст, пользователям нужно было заходить на сайт. А потом разработчики «Главреда» добавили API. Теперь разработчики других платформ могут встроить сервис «Главреда» к себе, чтобы пользователи могли проводить анализ текста, не покидая приложение и не переходя на другой сайт.
Или другой пример — быстрая регистрация с помощью аккаунта в соцсетях. Приложение может использовать API социальной сети, чтобы предоставить пользователю упрощённый доступ.
Проще говоря, использовать возможности API — это как нанять внештатного сотрудника на удалённую работу. Одно приложение поручает другому выполнить необходимую работу, а его продукт предоставляет как свой.
Примеры употребления на «Секрете»
«Пользователи регистрируются на Netflix, чтобы смотреть сериалы. А когда заканчивается бесплатный период, они подписываются за деньги и получают доступ к дополнительному контенту. Как собирать данные, когда у вас есть эта воронка? Для этого существуют аналитические API, такие как Segment».
(Из материала о том, какие метрики нужны стартапу, для чего и как их правильно смотреть.)
«Facebook кое-что брал у «ВКонтакте», российские соцсети тоже заимствовали идеи и подходы. Случалось даже откровенное копирование, когда один из крупных российских конкурентов полностью списал у нас структуру и документацию API».
(Экс-разработчик «ВКонтакте» Андрей Мима — из материала об истории этой соцсети.)
Нюансы
API повсеместно используют для взаимодействия программ и приложений с операционными системами или интернет-сайтами. Если бы Application Programming Interface отключились, то почти все сервисы в интернете и большинство компьютерных программ перестали бы работать.
С помощью API программисты могут использовать возможности разных приложений, не задумываясь о том, как эти приложения обрабатывают запросы и какой у них код.
Что такое API
Слово «API» мелькает в вакансиях даже для начинающих тестировщиков. То REST API, то SOAP API, то просто API. Что же это за зверь такой? Давайте разбираться!
— А зачем это мне? Я вообще-то web тестирую! Вот если пойду в автоматизацию, тогда да… Ну, еще это в enterprise тестируют, я слышал…
А вот и нет! Про API полезно знать любому тестировщику. Потому что по нему системы взаимодействуют между собой. И это взаимодействие вы видите каждый день даже на самых простых и захудалых сайтах.
Любая оплата идет через API платежной системы. Купил билет в кино? Маечку в онлайн-магазине? Книжку? Как только жмешь «оплатить», сайт соединяет тебя с платежной системой.
Но даже если у вас нет интеграции с другими системами, у вас всё равно есть API! Потому что система внутри себя тоже общается по api. И пока фронт-разработчик усиленно пилит GUI (графический интерфейс), вы можете:
- скучать в ожидании;
- проверять логику работы по API
Что такое API

API (Application programming interface) — это контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
Если переводить на русский, это было бы слово «договор». Договор между двумя сторонами, как договор на покупку машины:
- мои обязанности — внести такую то сумму,
- обязанность продавца — дать машину.
- Code first — сначала пишем код, потом по нему генерируем контракт
- Contract first — сначала создаем контракт, потом по нему пишем или генерируем код (в этой статье я буду говорить именно об этом стиле)
API — набор функций
Когда вы покупаете машину, вы составляете договор, в котором прописываете все важные для вас пункты. Точно также и между программами должны составляться договоры. Они указывают, как к той или иной программе можно обращаться.
Соответственно, API отвечает на вопрос “Как ко мне, к моей системе можно обратиться?”, и включает в себя:

- саму операцию, которую мы можем выполнить,
- данные, которые поступают на вход,
- данные, которые оказываются на выходе (контент данных или сообщение об ошибке).
Тут вы можете мне сказать:
— Хмм, погоди. Операция, данные на входе, данные на выходе — как-то всё это очень сильно похоже на описание функции!
Если вы когда-то сталкивались с разработкой или просто изучали язык программирования, вы наверняка знаете, что такое функция. Фактически у нас есть данные на входе, есть данные на выходе, и некая магия, которая преобразует одно в другое.
И да! Вы будете правы в том, что определения похожи. Почему? Да потому что API — это набор функций. Это может быть одна функция, а может быть много.

Как составляется набор функций
Да без разницы как. Как разработчик захочет, так и сгруппирует. Например, можно группировать API по функционалу. То есть:

- отдельно API для входа в систему, где будет регистрация и авторизация;
- отдельно API для отчетности — отчет 1, отчет 2, отчет 3… отчет N. Для разных отчетов у нас разные формулы = разные функции. И все мы их собираем в один набор, api для отчетности.
- отдельно API платежек — для работы с каждым банком своя функция.
- .
Можно не группировать вообще, а делать одно общее API.
Можно сделать одно общее API, а остальные «под заказ». Если у вас коробочный продукт, то в него обычно входит набор стандартных функций. А любые хотелки заказчиков выносятся отдельно.

Получается, что в нашей системе есть несколько разных API, на каждое из которых у нас написан контракт. В каждом контракте четко прописано, какие операции можно выполнять, какие функции там будут

И конечно, функции можно переиспользовать. То есть одну и ту же функцию можно включать в разные наборы, в разные апи. Никто этого не запрещает.

Получается, что разработчик придумывает, какое у него будет API. Либо делает общее, либо распределяет по функционалу или каким-то своим критериям, и в каждое апи добавляет тот набор функций, который ему необходим.
При чем тут слово «интерфейс»
— Минуточку, Оля! Ты же сама выше писала, что API — это Application programming interface. Почему ты тогда говоришь о контракте, хотя там слово интерфейс?
Да потому, что в программировании контракт — это и есть интерфейс. В классическом описании ООП (объектно-ориентированного программирования) есть 3 кита:
- Инкапсуляция
- Наследование
- Полиморфизм
Не всегда программа предоставляет именно графический интерфейс. Это может быть SOAP, REST интерфейс, или другое API. Чтобы использовать этот интерфейс, вы должны понимать:
- что подать на вход;
- что получается на выходе;
- какие исключения нужно обработать.
Как вызывается API
Вызвать апи можно как напрямую, так и косвенно.
- Система вызывает функции внутри себя
- Система вызывает метод другой системы
- Человек вызывает метод
- Автотесты дергают методы
- Пользователь работает с GUI
Вызов API напрямую
1. Система вызывает функции внутри себя
Разные части программы как-то общаются между собой. Они делают это на программном уровне, то есть на уровне API!
Это самый «простой» в использовании способ, потому что автор API, которое вызывается — разработчик. И он же его потребитель! А значит, проблемы с неактуальной документацией нет =)
Шучу, проблемы с документацией есть всегда. Просто в этом случае в качестве документации будут комментарии в коде. А они, увы, тоже бывают неактуальны. Или разработчики разные, или один, но уже забыл, как делал исходное api и как оно должно работать…
2. Система вызывает метод другой системы
А вот это типичный кейс, которые тестируют тестировщики в интеграторах. Или тестировщики, которые проверяют интеграцию своей системы с чужой.
Одна система дергает через api какой-то метод другой системы. Она может попытаться получить данные из другой системы. Или наоборот, отправить данные в эту систему.
Допустим, я решила подключить подсказки из Дадаты к своему интернет-магазинчику, чтобы пользователь легко ввел адрес доставки.
Я подключаю подсказки по API. И теперь, когда пользователь начинает вводить адрес на моем сайте, он видит подсказки из Дадаты. Как это получается:
- Он вводит букву на моем сайте
- Мой сайт отправляет запрос в подсказки Дадаты по API
- Дадата возвращает ответ
- Мой сайт его обрабатывает и отображает результат пользователю
И, конечно, не забываем про кейс, когда мы разрабатываем именно API-метод. Который только через SOAP и можно вызвать, в интерфейсе его нигде нет. Что Заказчик заказал, то мы и сделали ¯\_(ツ)_/¯
Пример можно посмотреть в Users. Метод MagicSearch создан на основе реальных событий. Хотя надо признать, в оригинале логика еще замудренее была, я то под свой сайт подстраивала.
Но тут фишка в том, что в самой системе в пользовательском интерфейсе есть только обычный поиск, просто строка ввода. Ну, может, парочка фильтров. А вот для интеграции нужна была целая куча доп возможностей, что и было сделано через SOAP-метод.
Функционал супер-поиска доступен только по API, пользователь в интерфейсе его никак не пощупает.
В этом случае у вас обычно есть ТЗ, согласно которому работает API-метод. Ваша задача — проверить его. Типичная задача тестировщика, просто добавьте к стандартным тестам на тест-дизайн особенности тестирования API, и дело в шляпе!
(что именно надо тестировать в API — я расскажу отдельной статьей чуть позднее)
3. Человек вызывает метод
- Для ускорения работы
- Для локализации бага (проблема где? На сервере или клиенте?)
- Для проверки логики без докруток фронта
Для примера снова идем в Users. Если мы хотим создать пользователя, надо заполнить уйму полей!

Конечно, это можно сделать с помощью специальных плагинов типа Form Filler. Но что, если вам нужны адекватные тестовые данные под вашу систему? И на русском языке?
Заполнение полей вручную — грустно и уныло! А уж если это надо повторять каждую неделю или день на чистой тестовой базе — вообще кошмар. Это сразу первый приоритет на автоматизацию рутинных действий.
И в данном случае роль автоматизатора выполняет… Postman. Пользователя можно создать через REST-запрос CreateUser. Один раз прописали нормальные “как настоящие” данные, каждый раз пользуемся. Профит!
Вместо ручного заполнения формы (1 минута бездумного заполнения полей значениями «лпрулпк») получаем 1 секунду нажатия на кнопку «Send». При этом значения будут намного адекватнее.
А еще в постмане можно сделать отдельную папку подготовки тестовой базы, напихать туда десяток запросов. И вот уже на любой базе за пару секунд вы получаете столько данных, сколько вручную вбивали бы часами!
Если вы нашли баг и не понимаете, на кого его вешать — разработчика front-end или back-end, уберите все лишнее. Вызовите метод без графического интерфейса. А еще вы можете тестировать логику программы, пока интерфейс не готов или сломан.
4. Автотесты дергают методы
Есть типичная пирамида автоматизации:

- GUI-тесты — честный тест, «как это делал бы пользователь».
- API-тесты — опускаемся на уровень ниже, выкидывая лишнее.
- Unit-тесты — тесты на отдельную функцию
Слово API как бы намекает на то, что будет использовано в тестах ツ
- операция: загрузка отчета;
- на входе: данные из ручных или автоматических корректировок или из каких-то других мест;
- на выходе: отчет, построенный по неким правилам

- Ячейка 1: Х — Y
- Ячейка 2: Z * 6
- .
GUI-тесты — честный тест, робот делает все, что делал бы пользователь. Открывает браузер, тыкает на кнопочки… Но если что-то упадет, будете долго разбираться, где именно.
API-тесты — все то же самое, только без браузера. Мы просто подаем данные на вход и проверяем данные на выходе. Например, можно внести итоговый ответ в эксельку, и пусть робот выверяет ее, правильно ли заполняются данные? Локализовать проблему становится проще.
Unit-тесты — это когда мы проверяем каждую функцию отдельно. Отдельно смотрим расчет для ячейки 1, отдельно — для ячейки 2, и так далее. Такие тесты шустрее всего гоняются и баги по ним легко локализовать.
Косвенный вызов API
Когда пользователь работает с GUI, на самом деле он тоже работает с API. Просто не знает об этом, ему это просто не нужно.
То есть когда пользователь открывает систему и пытается загрузить отчет, ему не важно, как работает система, какой там magic внутри. У него есть кнопочка «загрузить отчет», на которую он и нажимает. Пользователь работает через GUI (графический пользовательский интерфейс).

Но на самом деле под этим графическим пользовательским интерфейсом находится API. И когда пользователь нажимает на кнопочку, кнопочка вызывает функцию построения отчета.

А функция построения отчета уже может вызывать 10 разных других функций, если ей это необходимо.
И вот уже пользователь видит перед собой готовый отчет. Он вызвал сложное API, даже не подозревая об этом!
Что значит «Тестирование API»
В первую очередь, мы подразумеваем тестирование ЧЕРЕЗ API. «Тестирование API» — общеупотребимый термин, так действительно говорят, но технически термин некорректен. Мы не тестируем API, мы не тестируем GUI (графический интерфейс). Мы тестируем какую-то функциональность через графический или программный интерфейс.
Но это устоявшееся выражение. Можно использовать его и говорить “тестирование API”. И когда мы про это говорим, мы имеем в виду:
- автотесты на уровне API
- или интеграцию между двумя разными системами.

Когда мы говорим про тестирование API, чаще всего мы подразумеваем тестирование Remote API. Когда у нас есть две системы, находящихся на разных компьютерах, которые как-то между собой общаются.
И если вы видите в вакансии «тестирование API», скорее всего это подразумевает умение вызвать SOAP или REST сервис и протестировать его. Хотя всегда стоит уточнить!
Резюме
API (Application programming interface) — это контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
- саму операцию, которую мы можем выполнить,
- данные, которые поступают на вход,
- данные, которые оказываются на выходе (контент данных или сообщение об ошибке).
- Система вызывает функции внутри себя
- Система вызывает метод другой системы
- Человек вызывает метод
- Автотесты дергают методы
- Пользователь работает с GUI
- автотесты на уровне API (умение автоматизировать)
- интеграцию между двумя разными системами (обычно SOAP или REST, то есть работу в SOAP Ui или Postman).
- Тестирование IT-систем
- Тестирование веб-сервисов
Что такое API и как с ним работать
Разбираемся, как работает эта технология и какие функции выполняет. Рассматриваем примеры использования, способы вызова и тестирования.

Кирилл Афонин
Автор статьи
30 декабря 2022 в 17:15
Кем бы вы ни работали в IT, познакомиться с API придется. Знание базовых принципов, по которым программы «разговаривают» друг с другом, поможет в работе не только программистам и тестировщикам, но и аналитикам и менеджерам продукта.
Рассказываем в статье, что такое API, как с ним работать и говорить на одном языке с программистами, экономить время на создании продуктов и тестировать гипотезы на раз-два.
Что такое API и зачем он нужен
API — Application Programming Interfaces — это программный интерфейс приложений. Технология соединяет разные системы и связывает программы друг с другом.
Использование API поможет гораздо меньше кодить, а вместо этого брать уже существующие данные, функции и приложения и на их основе создавать новые продукты. Скорость и экономия времени ценятся в IT.
Работа с API полезна, когда нужно быстро получить данные, сократить время разработки, адаптировать продукт к новому рынку, проверить работоспособность вашего MVP или масштабировать бизнес.
Менеджеры продуктов и аналитики должны понимать базовые понятия и как использовать API, чтобы уверенно разговаривать с командой разработки и использовать весь потенциал этого решения для быстрого создания продуктов и улучшения клиентского опыта.
А тестировщики изучают API, чтобы уметь тестировать их корректную работу. Этому учат на курсе Skypro «Инженер по тестированию». За несколько месяцев получите навыки и знания, которые необходимы новичку для начала работы. Найти подходящую вакансию помогут специалисты центра карьеры.
Станьте аналитиком данных в два раза быстрее
Ускоренный курс для тех, кто хочет быстрее перейти на удаленку

Хорошо спроектированная инфраструктура API экономит затраты, увеличивает доходы и создает новые бизнес-модели для компании (проверено Google, Amazon, Slack и Facebook*).
Программисты обязаны понимать устройство API и его возможные функции: даже если вы не пишете API как backend-разработчик, вы к нему обращаетесь как frontend-разработчик. В курсе «Веб-разработчик» есть блок об особенностях взаимодействия с браузерными и внешними API.
Основные виды API
API бывают внутренние и публичные, партнерские и составные.
Внутренние API используют, когда нужно связать ПО с разными сервисами внутри компании, которые создали сотрудники. Еще внутренние API помогают работе собственных приложений, например при внутренней передаче данных.
Публичные API создают для совместного использования. Кто-то делает приложение и открывает доступ, а другие разработчики могут пользоваться его функциями для своей работы и экономить время.
Например, в Slack вы можете не только отслеживать задачи и ставить потрясающие анимированные реакции на сообщения коллег, но и делать собственное приложение на его основе. Оно будет отправлять сообщения, генерировать оповещения и создавать группы на платформе. Писали не вы — а пользуетесь вы.
Есть еще партнерские API — они публичные, но с оговоркой: пользоваться ими может не кто угодно, а только авторизованные партнеры. Например, ЮMoney не даст принимать платежи онлайн, пока вы не заключите с компанией договор и не получите ключ доступа.
И есть составные — это система API, которая объединяет два или больше разных API, чтобы решить какую-то сложную задачу.
Примеры использования API
Простой, но жизненно необходимый API: сервис, который позволяет узнать всё о Покемонах — от их классификации и способностей до новых игр и фанатских сервисов.
Сложный составной API рассмотрим на примере городского транспорта: допустим, у нас есть много автобусов и трамваев и каждый передает информацию о своем местоположении в единое общее внутреннее API.
Каждая транспортная компания агрегирует свои данные, но целую картину увидит только государственная компания, которой нужно выводить на табло остановок общественного транспорта информацию о времени прибытия ближайшего автобуса. У нее свое публичное API.
Кстати, данные из него могут передаваться и дальше — например, на какие-то картографические сервисы, которым хочется предлагать эту информацию своим пользователям. Пример такого API.
Как работают API
Запросы и ответы
API работают с использованием «запросов» и «ответов». Запросы — это взаимодействие с API, а ответы — результат этого взаимодействия.
Например, технология точного прогноза погоды Meteum 2.0 получает запросы с устройств пользователей, которые боятся попасть под дождь.
Она берет информацию из пяти крупных центров, которые передают данные о погоде, дополняет их данными от пользователей, которые находятся в требуемом регионе, и выдает ответ.
В теле запроса вы сообщаете API, из какого региона хотите получить информацию о погоде. Meteum 2.0 возвращает запрошенную информацию в виде зашифрованного сообщения. Как именно будет передаваться информация и как ответ поймет система API — прописано в документации.
HTTP-методы
В запросах к наиболее популярным API (RESTFUL API) необходимо использовать HTTP-методы. Запомните всего три метода: POST, GET и PUT.
POST используют для создания новых ресурсов. Например, если бы вы хотели создать новое текстовое сообщение с помощью общедоступного API Slack, где ресурс — это сообщение.
GET используют для чтения данных. Например, в Meteum 2.0 этот метод отвечает за получение информации о погоде.
PUT используют для обновления или замены данных. Например, обновление адреса электронной почты пользователя.
Использовать эти запросы для тестирования API учат на курсе Skypro «Инженер по тестированию». В программе есть специальный блок, который этому посвящен. В результате выполните рабочий проект в Postman, пройдете нагрузочные тесты и освоите азы автоматизации тестирования.

Python и API: настраиваем интеграции // Урок 8 от Skypro
Конечные точки — эндпоинтc (Endpoints)
Эндпоинт — это место, в котором API соединяется с программой.
Вот вы попросили Алису из «Яндекса» узнать погоду в Йошкар-Оле. Она отправила запрос к API Meteum 2.0, а он обратился к серверам прогнозистов из национальных центров России, США, Канады, Японии и ЕС, к своей внутренней системе аналитики и к пользователям, которые недавно выходили из дома и могут поделиться опытом наблюдения дождя, чтобы ответ был релевантным.
Все эти концы, «торчащие» из программы, называются Endpoints, или конечные точки.
Одна и та же конечная точка может работать с несколькими HTTP-методами — запрашивать, получать и менять данные в последовательных запросах.
Коды ответов
В процессе взаимодействия с API вы получаете разные типы сообщений — коды. Они показывают успех или неудачу запроса.
Есть куча кодов ошибок — от 001 до 1000-х, но в целом ориентироваться можно так:
- коды в диапазоне 200 указывают на успех;
- коды в диапазоне 400 указывают на ошибку на основании предоставленной информации: например, требуемый параметр не был отправлен;
- коды в диапазоне 500 указывают на ошибку на серверах API.
Подробная информация об этих сообщениях описана в документации API: обычно там, где говорится об обработке ошибок.
Аутентификация и авторизация
Большинство API-интерфейсов требуют какую-либо аутентификацию пользователя перед выполнением запроса к своим службам. Это мудро: и данные о пользователях получены, и условия безопасности соблюдены.
Аутентификация просто демонстрирует API, кто тот пользователь, который обращается к его службе. Обычно она состоит из имени, пароля и токена доступа.
Авторизация не просто собирает данные, а выдает разрешение на использование API — то есть определяет, что можно и что нельзя делать разным группам пользователей в ходе работы.
Документация API
Очень нужная штука, которую нужно уметь читать хотя бы наискосок. Благодаря документации пользователь и API могут общаться «на одном языке» и оба получают то, что хотят. В ней прописано:
- как вы докажете API, что вы — это вы;
- что можно делать через этот API;
- как передаются параметры в запросах, чтобы API понял, что от него хотят;
- как нужно отправлять эту информацию внутри сервиса;
- количество запросов, которые можно сделать за определенный период времени;
- как будет возвращаться ответ;
- какие коды ответов присутствуют и как обрабатывать возможные полученные ошибки.
Пример документации: единый API для приема платежей, отправки чеков, проведения возвратов и других операций.
Где найти новые API
Большие компании размещают новинки у себя на сайтах и рассказывают об этом в рассылках и социальных сетях. Подпишитесь на обновления любимых компаний, лидеров вашей отрасли, чтобы быть в курсе.
Еще есть открытые платформы, торговые площадки и каталоги, где любой желающий может выставить свой публичный API на продажу.
Размещение API может помочь монетизировать решения компании — и добавить узнаваемости.
А вот сайт, где собрано много API-документации.
А на курсе Skypro «Java-разработчик» можно создать собственный API. Разберетесь, что это такое, зачем нужно и под руководством опытного наставника напишете код API, чтобы разработать веб-приложение.
Как правильно работать с API
- Подготовиться: изучить документацию, зарегистрироваться в системе партнера, если это необходимо, получить ключ.
- Вызвать API, авторизовавшись с вашим ключом.
- Отправить запрос.
- Получить ответ или код ошибки.
- Передать полученные данные в вашу систему или отобразить результат пользователю.
- Наслаждаться успехом.
Как тестировать API
В основном нужно проверять ответы сервера, выполняя запросы к адресам API для тестирования производительности.
Еще писать модульные тесты для проверки бизнес-логики и корректности функций, проверять безопасность, имитируя системные атаки.
Вот что рассказала тестировщица, которая «встретилась» с API:
«Часто API — нелюбимый ребенок у разработчика. Не каждый пишет нормальную документацию, многие умудряются обновлять версии без поддержки старых.
Если API публичный — нужно не забывать поддерживать „песочницу“ для интегрантов. Если внутренний — есть сложности в проверке обновлений бэка и фронта. Если обновился бэк — нужно сразу проверять и API, а об этом многие забывают или не придают значения».
Но при должной поддержке версионности и своевременном обновлении документации проблем не возникает.
Что почитать
Про важность API: манифест Безоса про API в Amazon — на сайте.
Еще API-примеры: как обновлять информацию о доступных вкусах своего мороженого через REST API — доступный ролик на английском.
Главное
API — это не страшно и очень функционально. Современные REST API просты: для работы с ними достаточно знания нескольких команд и знакомства с документацией.
При этом API не только дает возможность задать архитектуру продукта, но и позволяет быстро итерировать наработки со всего мира, быстрее проверять гипотезы, поскольку вы или ваши разработчики будут использовать существующую инфраструктуру.
Он формирует плацдарм для новых разнообразных продуктов на базе вашего. И наоборот — можно подглядеть и применить API-функции, которые уже кто-то создал.
*Продукты компании Meta запрещены на территории РФ.