API (МФА: [ˌeɪ(.)piˈaɪ]; аббр. от англ. application programming interface,дословно программный интерфейс приложения) — программный интерфейс, то есть описание способов взаимодействия одной компьютерной программы с другими. (В противоположность пользовательскому интерфейсу, используемому для взаимодействия конечного пользователя с программой.) Обычно входит в описание какого-либо интернет-протокола (например, SCIM), программного каркаса (фреймворка) или стандарта вызовов функций операционной системы. Часто реализуется отдельной программной библиотекой или сервисом операционной системы. Используется программистами при написании всевозможных приложений.
Проще говоря, это способ взаимодействия какого-то программного кода с набором каких-то программных компонентов, с помощью которых одна компьютерная программа (например, бот или сайт) может использовать другую программу.
Назначение
API (интерфейс программирования приложения) упрощает процесс программирования при создании приложений, абстрагируя базовую реализацию и предоставляя только объекты или действия, необходимые разработчику. Если графический интерфейс для почтового клиента может предоставить пользователю кнопку, которая выполнит все шаги для выборки и выделения новых писем, то API для ввода/вывода файлов может дать разработчику функцию, которая копирует файл из одного места в другое, не требуя от разработчика понимания операций файловой системы, происходящих за кулисами.
API как средство интеграции приложений
Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это набор «ручек», которые доступны пользователю данного ящика и которые он может вертеть и переключать.
Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.
По такому принципу построены протоколы передачи данных по Интернету. Стандартный стек протоколов (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего («нижележащего») уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему («вышележащему») уровню.
Понятие протокола близко по смыслу к понятию API. И то, и другое является абстракцией функциональности, только в первом случае речь идёт о передаче данных, а во втором — о взаимодействии приложений.
API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.
Сигнатура функции
Сигнатура функции — часть общего объявления функции, позволяющая средствам трансляции идентифицировать функцию среди других. В различных языках программирования существуют разные представления о сигнатуре функции, что также тесно связано с возможностями перегрузки функций в этих языках.
Иногда различают сигнатуру вызова и сигнатуру реализации функции. Сигнатура вызова обычно составляется по синтаксической конструкции вызова функции с учётом сигнатуры области видимости данной функции, имени функции, последовательности фактических типов аргументов в вызове и типе результата. В сигнатуре реализации обычно участвуют некоторые элементы из синтаксической конструкции объявления функции: спецификатор области видимости функции, её имя и последовательность формальных типов аргументов.
Например, в языке программирования простая функция однозначно опознаётся компилятором по своему имени и последовательности типов своих аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.
В языке программирования Java сигнатуру метода составляют его имя и последовательность типов параметров; тип возвращаемого значения в сигнатуре не участвует.
Семантика функции
Семантика функции — это описание того, что данная функция делает. Семантика функции включает в себя описание того, что является результатом вычисления функции, как и от чего этот результат зависит. Обычно результат выполнения зависит только от значений аргументов функции, но в некоторых модулях есть понятие состояния. Тогда результат функции может зависеть от этого состояния, и, кроме того, результатом может стать изменение состояния. Логика этих зависимостей и изменений относится к семантике функции. Полным описанием семантики функций является исполняемый код функции или математическое определение функции.
API операционных систем. Проблемы, связанные с многообразием API
Практически все операционные системы (UNIX, Windows, OS X, Linux и т. д.) имеют API, с помощью которого программисты могут создавать приложения для этой операционной системы. Главный API операционных систем — это множество системных вызовов.
В индустрии программного обеспечения общие стандартные API для стандартной функциональности играют важную роль, так как они гарантируют, что все программы, использующие общий API, будут работать одинаково хорошо или, по крайней мере, типичным привычным образом. В случае API графических интерфейсов это означает, что программы будут иметь похожий пользовательский интерфейс, что облегчает процесс освоения новых программных продуктов.
С другой стороны, различия в API различных операционных систем существенно затрудняют перенос приложений между платформами. Существуют различные методы обхода этой сложности — написание «промежуточных» API (API графических интерфейсов wxWidgets, GTK и т. п.), написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine, cygwin и т. п.), введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C), написание интерпретируемых языков, реализуемых на разных платформах (sh, Python, Perl, PHP, Tcl, JavaScript, Ruby и т. д.).
Также в распоряжении программиста часто находится несколько различных API, позволяющих добиться одного и того же результата. При этом каждый API обычно реализован с использованием API программных компонент более низкого уровня абстракции.
Например: для того, чтобы увидеть в браузере строчку «Hello, world!», достаточно лишь создать HTML-документ с минимальным заголовком и простейшим телом, содержащим данную строку. Когда браузер откроет этот документ, программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при помощи API операционной системы прочитает этот файл и разберётся в его устройстве, затем последовательно вызовет через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать „Hello, world!“ выбранным шрифтом». Во время выполнения этих операций библиотека обратится к библиотеке оконного интерфейса с соответствующими запросами, уже эта библиотека обратится к API операционной системы, чтобы записать данные в буфер видеокарты.
При этом практически на каждом из уровней реально существует несколько возможных альтернативных API. Например: мы могли бы писать исходный документ не на HTML, а на LaTeX, для отображения могли бы использовать любой браузер. К тому же различные браузеры используют различные HTML-библиотеки, и, кроме того, всё это может быть собрано с использованием различных библиотек примитивов и на различных операционных системах.
Основными сложностями существующих многоуровневых систем API, таким образом, являются:
- Сложность портирования программного кода с одной системы API на другую (например, при смене ОС);
- Потеря функциональности при переходе с более низкого уровня на более высокий. Грубо говоря, каждый «слой» API создаётся для облегчения выполнения некоторого стандартного набора операций. Но при этом реально затрудняется, либо становится принципиально невозможным выполнение некоторых других операций, которые предоставляет более низкий уровень API.
Наиболее известные API
Список примеров в этой статье не основывается на , посвящённых непосредственно предмету статьи. |
- Cocoa
- [англ.]
- Windows API
- /DirectSound (часть DirectX)
- OpenAL
Web API
Используется в веб-разработке — содержит, как правило, определённый набор HTTP-запросов, а также определение структуры HTTP-ответов, для выражения которых чаще всего используют XML− или JSON−формат, а также ProtoBuf, XDR и некоторые другие.
Web API является практически синонимом для веб-службы, хотя в последнее время за счёт тенденции Web 2.0 осуществлён переход от SOAP к REST типу коммуникации. Веб-интерфейсы, обеспечивающие сочетание нескольких сервисов в новых приложениях, известны как гибридные.
Пример: MediaWiki API
См. также
Примечания
- Переводится как «программный интерфейс приложения», «интерфейс прикладного программирования». Часто употребляется упрощённое транслитерированное сленговое название [апи́]. Используются и укороченные варианты перевода — «интерфейс приложения», «программный интерфейс».
- System for Cross-Domain Identity Management: Protocol draft-ietf-scim-api-19 . Дата обращения: 12 октября 2018. 7 июля 2017 года.
- Spring Framework 5.3.1 API . Дата обращения: 12 октября 2018. 10 октября 2018 года.
- The Linux kernel user-space API guide . Дата обращения: 12 октября 2018. 12 октября 2018 года.
- Clarke, Steven Measuring API Usability . Dr. Dobb's (2004). Дата обращения: 9 июля 2021. 3 марта 2022 года.
- Java Language Specification. Chapter 8.4.2. "Method Signature" . Java Language Specification. docs.oracle.com. Дата обращения: 24 февраля 2020. 3 мая 2020 года.
В статье не хватает (см. ). |
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер
Eta statya ob interfejsah programmirovaniya Ob organizacii ispolzuyushej abbreviaturu API sm Amerikanskij institut nefti API MFA ˌeɪ piˈaɪ abbr ot angl application programming interface doslovno programmnyj interfejs prilozheniya programmnyj interfejs to est opisanie sposobov vzaimodejstviya odnoj kompyuternoj programmy s drugimi V protivopolozhnost polzovatelskomu interfejsu ispolzuemomu dlya vzaimodejstviya konechnogo polzovatelya s programmoj Obychno vhodit v opisanie kakogo libo internet protokola naprimer SCIM programmnogo karkasa frejmvorka ili standarta vyzovov funkcij operacionnoj sistemy Chasto realizuetsya otdelnoj programmnoj bibliotekoj ili servisom operacionnoj sistemy Ispolzuetsya programmistami pri napisanii vsevozmozhnyh prilozhenij Rol API v operacionnoj sisteme Windows Proshe govorya eto sposob vzaimodejstviya kakogo to programmnogo koda s naborom kakih to programmnyh komponentov s pomoshyu kotoryh odna kompyuternaya programma naprimer bot ili sajt mozhet ispolzovat druguyu programmu NaznachenieAPI interfejs programmirovaniya prilozheniya uproshaet process programmirovaniya pri sozdanii prilozhenij abstragiruya bazovuyu realizaciyu i predostavlyaya tolko obekty ili dejstviya neobhodimye razrabotchiku Esli graficheskij interfejs dlya pochtovogo klienta mozhet predostavit polzovatelyu knopku kotoraya vypolnit vse shagi dlya vyborki i vydeleniya novyh pisem to API dlya vvoda vyvoda fajlov mozhet dat razrabotchiku funkciyu kotoraya kopiruet fajl iz odnogo mesta v drugoe ne trebuya ot razrabotchika ponimaniya operacij fajlovoj sistemy proishodyashih za kulisami API kak sredstvo integracii prilozhenijEsli programmu modul biblioteku rassmatrivat kak chyornyj yashik to API eto nabor ruchek kotorye dostupny polzovatelyu dannogo yashika i kotorye on mozhet vertet i pereklyuchat Programmnye komponenty vzaimodejstvuyut drug s drugom posredstvom API Pri etom obychno komponenty obrazuyut ierarhiyu vysokourovnevye komponenty ispolzuyut API nizkourovnevyh komponentov a te v svoyu ochered ispolzuyut API eshyo bolee nizkourovnevyh komponentov Po takomu principu postroeny protokoly peredachi dannyh po Internetu Standartnyj stek protokolov setevaya model OSI soderzhit 7 urovnej ot fizicheskogo urovnya peredachi bit do urovnya protokolov prilozhenij podobnyh protokolam HTTP i IMAP Kazhdyj uroven polzuetsya funkcionalnostyu predydushego nizhelezhashego urovnya peredachi dannyh i v svoyu ochered predostavlyaet nuzhnuyu funkcionalnost sleduyushemu vyshelezhashemu urovnyu Ponyatie protokola blizko po smyslu k ponyatiyu API I to i drugoe yavlyaetsya abstrakciej funkcionalnosti tolko v pervom sluchae rech idyot o peredache dannyh a vo vtorom o vzaimodejstvii prilozhenij API biblioteki funkcij i klassov vklyuchaet v sebya opisanie signatur i semantiki funkcij Signatura funkcii Signatura funkcii chast obshego obyavleniya funkcii pozvolyayushaya sredstvam translyacii identificirovat funkciyu sredi drugih V razlichnyh yazykah programmirovaniya sushestvuyut raznye predstavleniya o signature funkcii chto takzhe tesno svyazano s vozmozhnostyami peregruzki funkcij v etih yazykah Inogda razlichayut signaturu vyzova i signaturu realizacii funkcii Signatura vyzova obychno sostavlyaetsya po sintaksicheskoj konstrukcii vyzova funkcii s uchyotom signatury oblasti vidimosti dannoj funkcii imeni funkcii posledovatelnosti fakticheskih tipov argumentov v vyzove i tipe rezultata V signature realizacii obychno uchastvuyut nekotorye elementy iz sintaksicheskoj konstrukcii obyavleniya funkcii specifikator oblasti vidimosti funkcii eyo imya i posledovatelnost formalnyh tipov argumentov Naprimer v yazyke programmirovaniya C prostaya funkciya odnoznachno opoznayotsya kompilyatorom po svoemu imeni i posledovatelnosti tipov svoih argumentov chto sostavlyaet signaturu funkcii v etom yazyke Esli funkciya yavlyaetsya metodom nekotorogo klassa to v signature budet uchastvovat i imya klassa V yazyke programmirovaniya Java signaturu metoda sostavlyayut ego imya i posledovatelnost tipov parametrov tip vozvrashaemogo znacheniya v signature ne uchastvuet Semantika funkcii Semantika funkcii eto opisanie togo chto dannaya funkciya delaet Semantika funkcii vklyuchaet v sebya opisanie togo chto yavlyaetsya rezultatom vychisleniya funkcii kak i ot chego etot rezultat zavisit Obychno rezultat vypolneniya zavisit tolko ot znachenij argumentov funkcii no v nekotoryh modulyah est ponyatie sostoyaniya Togda rezultat funkcii mozhet zaviset ot etogo sostoyaniya i krome togo rezultatom mozhet stat izmenenie sostoyaniya Logika etih zavisimostej i izmenenij otnositsya k semantike funkcii Polnym opisaniem semantiki funkcij yavlyaetsya ispolnyaemyj kod funkcii ili matematicheskoe opredelenie funkcii API operacionnyh sistem Problemy svyazannye s mnogoobraziem APIPrakticheski vse operacionnye sistemy UNIX Windows OS X Linux i t d imeyut API s pomoshyu kotorogo programmisty mogut sozdavat prilozheniya dlya etoj operacionnoj sistemy Glavnyj API operacionnyh sistem eto mnozhestvo sistemnyh vyzovov V industrii programmnogo obespecheniya obshie standartnye API dlya standartnoj funkcionalnosti igrayut vazhnuyu rol tak kak oni garantiruyut chto vse programmy ispolzuyushie obshij API budut rabotat odinakovo horosho ili po krajnej mere tipichnym privychnym obrazom V sluchae API graficheskih interfejsov eto oznachaet chto programmy budut imet pohozhij polzovatelskij interfejs chto oblegchaet process osvoeniya novyh programmnyh produktov S drugoj storony razlichiya v API razlichnyh operacionnyh sistem sushestvenno zatrudnyayut perenos prilozhenij mezhdu platformami Sushestvuyut razlichnye metody obhoda etoj slozhnosti napisanie promezhutochnyh API API graficheskih interfejsov wxWidgets GTK i t p napisanie bibliotek kotorye otobrazhayut sistemnye vyzovy odnoj OS v sistemnye vyzovy drugoj OS takie sredy ispolneniya kak Wine cygwin i t p vvedenie standartov kodirovaniya v yazykah programmirovaniya naprimer standartnaya biblioteka yazyka C napisanie interpretiruemyh yazykov realizuemyh na raznyh platformah sh Python Perl PHP Tcl JavaScript Ruby i t d Takzhe v rasporyazhenii programmista chasto nahoditsya neskolko razlichnyh API pozvolyayushih dobitsya odnogo i togo zhe rezultata Pri etom kazhdyj API obychno realizovan s ispolzovaniem API programmnyh komponent bolee nizkogo urovnya abstrakcii Naprimer dlya togo chtoby uvidet v brauzere strochku Hello world dostatochno lish sozdat HTML dokument s minimalnym zagolovkom i prostejshim telom soderzhashim dannuyu stroku Kogda brauzer otkroet etot dokument programma brauzer peredast imya fajla ili uzhe otkrytyj deskriptor fajla biblioteke obrabatyvayushej HTML dokumenty ta v svoyu ochered pri pomoshi API operacionnoj sistemy prochitaet etot fajl i razberyotsya v ego ustrojstve zatem posledovatelno vyzovet cherez API biblioteki standartnyh graficheskih primitivov operacii tipa ochistit okoshko napisat Hello world vybrannym shriftom Vo vremya vypolneniya etih operacij biblioteka obratitsya k biblioteke okonnogo interfejsa s sootvetstvuyushimi zaprosami uzhe eta biblioteka obratitsya k API operacionnoj sistemy chtoby zapisat dannye v bufer videokarty Pri etom prakticheski na kazhdom iz urovnej realno sushestvuet neskolko vozmozhnyh alternativnyh API Naprimer my mogli by pisat ishodnyj dokument ne na HTML a na LaTeX dlya otobrazheniya mogli by ispolzovat lyuboj brauzer K tomu zhe razlichnye brauzery ispolzuyut razlichnye HTML biblioteki i krome togo vsyo eto mozhet byt sobrano s ispolzovaniem razlichnyh bibliotek primitivov i na razlichnyh operacionnyh sistemah Osnovnymi slozhnostyami sushestvuyushih mnogourovnevyh sistem API takim obrazom yavlyayutsya Slozhnost portirovaniya programmnogo koda s odnoj sistemy API na druguyu naprimer pri smene OS Poterya funkcionalnosti pri perehode s bolee nizkogo urovnya na bolee vysokij Grubo govorya kazhdyj sloj API sozdayotsya dlya oblegcheniya vypolneniya nekotorogo standartnogo nabora operacij No pri etom realno zatrudnyaetsya libo stanovitsya principialno nevozmozhnym vypolnenie nekotoryh drugih operacij kotorye predostavlyaet bolee nizkij uroven API Naibolee izvestnye APISpisok primerov v etoj state ne osnovyvaetsya na avtoritetnyh istochnikah posvyashyonnyh neposredstvenno predmetu stati Dobavte ssylki na istochniki predmetom rassmotreniya kotoryh yavlyaetsya tema nastoyashej stati ili razdela v celom a ne otdelnye elementy spiska V protivnom sluchae spisok primerov mozhet byt udalyon Operacionnyh sistemCocoa angl Windows APIGraficheskih interfejsovDirectDraw Direct3D chast DirectX SFML OpenVG SDL Vulkan MantleZvukovyh interfejsov DirectSound chast DirectX OpenALAutentifikacionnyh sistemBioAPI PAMWeb API Ispolzuetsya v veb razrabotke soderzhit kak pravilo opredelyonnyj nabor HTTP zaprosov a takzhe opredelenie struktury HTTP otvetov dlya vyrazheniya kotoryh chashe vsego ispolzuyut XML ili JSON format a takzhe ProtoBuf XDR i nekotorye drugie Web API yavlyaetsya prakticheski sinonimom dlya veb sluzhby hotya v poslednee vremya za schyot tendencii Web 2 0 osushestvlyon perehod ot SOAP k REST tipu kommunikacii Veb interfejsy obespechivayushie sochetanie neskolkih servisov v novyh prilozheniyah izvestny kak gibridnye Primer MediaWiki APISm takzheV Vikislovare est statya API Dvoichnyj interfejs prilozhenij Abstraktnyj tip dannyh Povtornoe ispolzovanie kodaPrimechaniyaPerevoditsya kak programmnyj interfejs prilozheniya interfejs prikladnogo programmirovaniya Chasto upotreblyaetsya uproshyonnoe transliterirovannoe slengovoe nazvanie api Ispolzuyutsya i ukorochennye varianty perevoda interfejs prilozheniya programmnyj interfejs System for Cross Domain Identity Management Protocol draft ietf scim api 19 neopr Data obrasheniya 12 oktyabrya 2018 7 iyulya 2017 goda Spring Framework 5 3 1 API neopr Data obrasheniya 12 oktyabrya 2018 10 oktyabrya 2018 goda The Linux kernel user space API guide neopr Data obrasheniya 12 oktyabrya 2018 12 oktyabrya 2018 goda Clarke Steven Measuring API Usability neopr Dr Dobb s 2004 Data obrasheniya 9 iyulya 2021 3 marta 2022 goda Java Language Specification Chapter 8 4 2 Method Signature neopr Java Language Specification docs oracle com Data obrasheniya 24 fevralya 2020 3 maya 2020 goda V state ne hvataet ssylok na istochniki sm rekomendacii po poisku Informaciya dolzhna byt proveryaema inache ona mozhet byt udalena Vy mozhete otredaktirovat statyu dobaviv ssylki na avtoritetnye istochniki v vide snosok 13 maya 2011