Знание API встречается в вакансиях разработчиков Fullstack и Backend, а еще у QA — Тестировщиков ПО.
Разбираемся, что такое API, как работает и применяется в программировании и тестировании.
Немного теории
API (Application programming interface) — это специальный протокол для взаимодействия компьютерных программ, который позволяет использовать функции одного приложения другим.
API дает возможность разработчикам расширять функциональность своего продукта и связывать его с другим.
Ничего непонятно, а можно попроще?
Можно. Разберемся на отдаленном от программирования примере — случае аренды квартиры.
Есть две стороны — арендодатель и арендатор. Они договариваются о взаимодействии — первый сдает квартиру второму за определенную плату.
Между ними заключается контракт, который фиксирует все важные для сторон пункты: когда нужно платить за аренду и сколько, может ли хозяин квартиры посещать арендатора, как и когда об этом нужно предупредить, какая мебель и техника есть в квартире и так далее.
API — точно такой же договор, только для программного обеспечения. По сути этот протокол отвечает на вопрос «Как ко мне, к моей системе, можно обратиться?».
API включает в себя:
- саму операцию, которую мы можем выполнить
- данные, которые поступают на вход
- данные, которые оказываются на выходе (контент данных или сообщение об ошибке)
Получается, API — то же самое, что и функция?
И да, и нет. Определения действительно похожи, но API может быть как одной функцией, так и набором.
Эти наборы можно группировать по функционалу. Например:
- API для оплаты — для работы с каждой платежной системой и банком нужна своя функция.
- API для авторизации в системе — для регистрации и входа.
- API для отчетности — каждый отчет строится по своей формуле, а значит является отдельными функциями.
Не группировать функции тоже можно — тогда получится одно общее API со стандартным набором функций.
Каждая группа API имеет свой контракт, в котором прописано, какие операции можно выполнять и какие функции там будут.
Важно: Функции можно переиспользовать — то есть одну и ту же функцию допустимо включать в разные API.
Теперь совсем запутался. Если API — это набор функций, то причем тут интерфейс? Слово даже в названии есть!
Поясняем. В программировании контракт — почти то же самое, что интерфейс. Пользователи работают с GUI — graphical user interface (интерфейс, который можно увидеть).
Программы работают с API — Application programming interface. Им не нужна графика, только контракт.
Алло, API, вызываю тебя!
Вызвать API можно косвенно или напрямую. В первом случае пользователь осуществляет вызов посредством взаимодействия с GUI, во втором алгоритм немного сложнее.
Например, на сайте интернет-магазина подключена Яндекс.Карта, где можно ввести свой адрес и увидеть ближайший пункт выдачи товара.
Чтобы все работало, нужно подключить Яндекс.Карты к сайту по API.
Как это будет работать:
- Покупатель вводит адрес в поиск на сайте
- Сайт отправляет запрос в Яндекс.Карты по API
- Яндекс.Карты возвращают ответ
- Сайт его обрабатывает и отображает результат пользователю
При этом пользователь не видит этого взаимодействия, но оно есть.
В итоге — кто и где использует API?
API используют разработчики и тестировщики.
Разработчикам программный интерфейс позволяет упростить и ускорить выпуск новых продуктов (можно использовать уже готовые API для стандартных функций), сделать разработку более безопасной и сэкономить деньги.
Тестировщики используют API для тестирования ПО и оптимизации процессов.