Application programming interface (интерфейс прикладного программирования или программный интерфейс приложения) в широком смысле представляет собой набор описаний методик (структур, констант, процедур, функций и классов), благодаря которым 2 разных программных решения могут работать «в паре».
API обычно включается в описание определенного интернет-протокола (например, RFC), фреймворка или метода вызова функций ОС. Нередко API реализуется на базе конкретного программного продукта ОС или его библиотекой.
Использоваться интерфейс прикладного программирования может программистами в процессе разработки любых программных продуктов.
API в роли средства интеграции программного обеспечения
API — это функциональность, которая может быть у конкретного программного продукта (библиотека, модуль и т. д.). С помощью API можно уйти от привязки к тому, как именно реализована такая функциональность.
Если приложение (библиотеку, модуль и т. д.) назвать «черным ящиком», тогда интерфейс прикладного программирования будет представлять собой массу «кнопок и тумблеров», которые дают возможность пользователю этого «черного ящика» «крутить их и вертеть» как угодно.
Принципы API
Разные программные компоненты могут функционировать при помощи API. Так как обычные компоненты ПО имеют четкую иерархию, то высокоуровневые компоненты пользуются API тех компонентов, которые имеют уровень пониже. Низкоуровневые компоненты будут задействовать API-компоненты уровней, которые еще ниже.
По аналогичному принципу работают сетевые протоколы (для передачи данных по интернету и сети). Классический протокольный стек (OSI) имеет 7 уровней (начиная с физического и заканчивая уровнем протокола приложений по типу IMAP и HTTP).
Каждый при таком подходе использует функционал предыдущего, который находится «ниже» уровня передачи информации и передает необходимый функционал следующему уровню, который находится «выше».
Если говорить о протоколе, как о понятии, то по своему смыслу оно будет весьма близким к API. Ведь, оба этих решения представляют собой абстракцию функциональности, а их различия заключаются в том, что протокол передачи данных передает данные, а API обеспечивает взаимодействие разных программных продуктов. API-библиотеки (функции и классы) состоят из описаний семантики функций и сигнатур.