Прикладний програмний інтерфейс
Ця стаття не містить посилань на джерела. (січень 2016) |
Інтерфейс програмування застосунків (прикладни́й програ́мний інтерфе́йс, API) (англ. application programming interface) — це спосіб завдяки якому дві або більше компʼютерні програми можуть спілкуватися між собою. Набір визначень підпрограм, протоколів взаємодії та засобів для створення програмного забезпечення[1]. Спрощено — це набір чітко визначених методів для взаємодії різних компонентів. API надає розробнику засоби для швидкої розробки програмного забезпечення. API може бути для веб-базованих систем, операційних систем, баз даних, апаратного забезпечення, програмних бібліотек.
Призначення[ред. | ред. код]
Одним з найпоширеніших призначень API є надання набору широко використовуваних функцій, наприклад для малювання вікна чи іконок на екрані. Програмісти використовують переваги API у функціональності, таким чином їм не доводиться розробляти все з нуля. API є абстрактним поняттям — програмне забезпечення, що пропонує деякий API, часто називають реалізацією (англ. implementation) даного API. У багатьох випадках API є частиною набору розробки програмного забезпечення, водночас, набір розробки може включати як API, так і інші інструменти/апаратне забезпечення, отже ці два терміни не є взаємозамінювані[2].
Високорівневі API часто програють у гнучкості. Виконання деяких функцій нижчого рівня стає набагато складнішим, або навіть неможливим.
Версії API[ред. | ред. код]
23 серпня 2023 року, згідно повідомлення TechCrunch, соціальна мережа X оголосила, що припиняє підтримку деяких кінцевих точок та рівнів доступу до свого API під час модернізації своєї платформи. X також заявила, що вона оголошує застарілим API версії 1.1 та просить користувачів перейти на версію API 2.0 протягом наступних 30 днів[3][4].
Приклади API[ред. | ред. код]
Детальний опис[ред. | ред. код]
Наприклад, в мові Java, якщо програміст хоче використовувати клас «Scanner» (клас, який зчитує інформацію від користувача у програмах, орієнтованих на текстові операції), він імпортує бібліотеку «java.util.Scanner», щоб використовувати методи класу «Scanner» (у даному прикладі nextLine() i close()). Це приклад з API, що дозволяє взаємодіяти з бібліотеками в мові Java.
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("Enter your name: ");
Scanner input = new Scanner(System.in);
String name = input.nextLine();
System.out.println("Your name is " + name + ".");
input.close();
}
}
Документація[ред. | ред. код]
Безліч середовищ розробки програмного забезпечення надають документацію, пов'язану з ППІ (Прикладним Програмним Інтерфейсом) у деяких цифрових форматах, наприклад, Perl поставляється разом з програмою perldoc:
$ perldoc -f sqrt
sqrt EXPR
sqrt #Return the square root of EXPR. If EXPR is omitted, returns
#square root of $_. Only works on non-negative operands, unless
#you've loaded the standard Math::Complex module.
Мова python надає інструмент pydoc:
$ pydoc math.sqrt
Help on built-in function sqrt in math:
math.sqrt = sqrt(...)
sqrt(x)
Return the square root of x.
Java поставляється з документацією організованою в HTML сторінки (JavaDoc формат), а Microsoft розподіляє ППІ документацію для своїх мов (Visual C++, C#, Visual Basic, F#, і т. ін.), вбудовані в довідкову систему Visual Studio.
Прикладний програмний інтерфейс в об'єктноорієнтованих мовах[ред. | ред. код]
В об'єктноорієнтованих мовах прикладний програмний інтерфейс зазвичай включає в себе опис набору визначень класу, з набором форм поведінки, пов'язаних з цими класами. Це абстрактне поняття пов'язане з реальними функціями, які надані або надаватимуться, класами, які реалізуються в методах класу.
Прикладний програмний інтерфейс в цьому випадку можна розглядати як сукупність всіх методів, які публічно доступні в класах (зазвичай званий інтерфейс класу). Це означає, що прикладний програмний інтерфейс вказує методи, за допомогою яких взаємодіє з об'єктами, отриманими з визначень класів і обробляє їх.
У більш загальному плані можна визначити Прикладний Програмний Інтерфейс як сукупність усіх видів об'єктів, які можна вивести з визначення класу, і пов'язаних з ними можливих варіантів поведінки.
Наприклад: клас, що представляє Stack, може просто виставити публічно два методи Push() (для додавання нового елемента в стек) і Pop() (для вилучення останнього пункту, ідеально розташований на вершині стека).
У цьому випадку Прикладний Програмний Інтерфейс може бути інтерпретованим як два методи pop() і push(), або, більш широко, використовується варіант, коли можна використовувати елемент типу Stack, який реалізує поведінку стека, надаючи йому можливість для додавання / видалення елементів з вершини. Друга інтерпретація видається більш доречною в дусі об'єктноорієнтованого підходу.
Якість документації, пов'язаної з Прикладним Програмним Інтерфейсом, є часто ключовим фактором, що визначає його успішність з точки зору простоти використання.
Бібліотеки і платформи прикладних програмних інтерфейсів[ред. | ред. код]
ППІ, як правило, пов'язаний із бібліотеками програмного забезпечення: ППІ описує і вказує очікувану поведінку в той час, як бібліотека є фактичною реалізацією даного набору правил. Один ППІ може мати декілька реалізацій (або жодної, будучи абстрактним) у вигляді різних бібліотек, які мають такий же інтерфейс.
Прикладний програмний інтерфейс також може бути пов'язаним з платформами програмування: платформа може бути заснована на кількох бібліотеках реалізує декілька інтерфейсів ППІ, але на відміну від звичайного використання ППІ, доступ до поведінки вбудований в платформу опосередкований шляхом розширення його змісту новими класами і вставлений в саму платформу. Крім того, загальний потік управління програми може бути під контролем абонента.
Прикладний програмний інтерфейс та протоколи[ред. | ред. код]
Прикладний програмний інтерфейс може бути також реалізацією протоколу.
Коли ППІ реалізує протокол, він може бути заснованим на проксі-методах віддалених викликів, що засновані на протоколі зв'язку. Роль ППІ може полягати саме в тому, щоб приховати деталі транспортного протоколу. Наприклад: RMI є ППІ, який реалізує протокол або JRMP IIOP як RMI-IIOP.
Протоколи, як правило, розподіляються між різними технологіями і зазвичай дозволяють різним технологіям обмінюватися інформацією, діючи як абстракція між двома світами. ППІ, як правило, є специфічним для конкретної технології: звідси, інтерфейси даної мови не можуть бути використані на інших мовах, якщо виклики функції не будуть перетворені з конкретної адаптації бібліотеки.
Прикладний програмний інтерфейс спільного використання з допомогою віртуальної машини[ред. | ред. код]
Деякі мови, серед яких такі, що працюють на віртуальних машинах (наприклад: мови, сумісні з NET CLI середовища CLR і JVM сумісних мов у віртуальній машині Java) можуть ділитися програмними інтерфейсами.
У цьому випадку віртуальна машина дозволяє мові взаємодії завдяки спільному знаменнику віртуальної машини, що абстрагується від конкретної мови, використовувати проміжний байт-код і його мову.
Прикладний програмний інтерфейс у WEB[ред. | ред. код]
При використанні прикладного програмного інтерфейсу в контексті веброзробки, як правило, ППІ визначається набором повідомлень запиту HTTP, також визначається структура повідомлень-відповідей, зазвичай у розширенні мови розмітки XML або в форматі об'єктного запису JavaScript (JSON). У той час як прикладний програмний інтерфейс у Web історично був практично синонімом для вебслужби, останнім часом тенденція змінилась (так званий Web 2.0) на відхід від Simple Object Access Protocol (SOAP) на основі вебсервісів і сервіс-орієнтованої архітектури (SOA) на більш прямі передачі репрезентативного стану (REST) стилів вебресурсів та ресурсоорієнтованої архітектури (ROA).[5] Частина цієї тенденції пов'язана з рухом Семантичного вебресурсу до Опису Платформ (RDF), Концепції розвитку вебтехнологій інженерних онтологій.[6] Прикладні програмні інтерфейси у Web, що дозволяють комбінувати декількома прикладними програмними інтерфейсами в нові додатки називають гібридними.[7]
Політика впровадження[ред. | ред. код]
Існує два основних варіанти впровадження прикладного програмного інтерфейсу:
- Захист інформації про програмний інтерфейс від широкого загалу. Наприклад, компанія Sony дозволила розробляти програмний інтерфейс для PlayStation 2 лише ліцензованим розробникам. Це дозволило Sony контролювати, хто розробляв ігри для PlayStation 2. Такий варіант дозволяє компаніям переважаючий контроль якості за випуском продукції, і також надає можливості для додаткового доходу від ліцензування.
- Розробка програмного інтерфейсу існує також у вільному доступі. Наприклад, компанія Microsoft робить програмний інтерфейс до Microsoft Windows загально доступним, а компанія Apple, своєю чергою, впроваджує прикладні програмні інтерфейси Carbon та Cocoa, для того, щоб дозволити писати програмне забезпечення під свої платформи.
Прикладні програмні інтерфейси та авторські права[ред. | ред. код]
У 2010 році Oracle подала до суду на Google, за поширення нової версії Java, вбудованої у нову версію ОС Android без дозволу на використання JavaAPI, хоча аналогічний договір був наданий на використання проєкту OpenJDK. Суддя виніс рішення у справі Oracle проти Google, про те, що даний програмний інтерфейс не може бути захищеним авторськими правами у США.[8]
Див. також[ред. | ред. код]
Джерела[ред. | ред. код]
- ↑ Reddy, Martin (14 березня 2011). API Design for C++ (англ.). Elsevier. ISBN 978-0-12-385004-1. Архів оригіналу за 28 січня 2022. Процитовано 28 січня 2022.
- ↑ Clarke, Steven. Measuring API Usability. Dr. Dobb's. Архів оригіналу за 3 березня 2022. Процитовано 28 січня 2022.
- ↑ X changes its API to retire legacy tiers and endpoints. // By Ivan Mehta/ 5:04 PM GMT+3/ August 23, 2023
- ↑ X переходить на новий API: що зміниться. // Автор: Артем Житкевич. 23.08.2023
- ↑ Wayback Machine. web.archive.org. 28 вересня 2011. Архів оригіналу за 28 вересня 2011. Процитовано 28 січня 2022.
- ↑ Parr, Ben (21 травня 2009). The Evolution of the Social Media API. Mashable (англ.). Архів оригіналу за 28 січня 2022. Процитовано 28 січня 2022.
- ↑ "API-fication" (PDF download). www.hcltech.com (PDF). Архів оригіналу (PDF) за 19 жовтня 2021. Процитовано 28 січня 2022.
- ↑ Dr. Dobb's | Good stuff for serious developers: Programming Tools, Code, C++, Java, HTML5, Cloud, Mobile, Testing. Dr. Dobb's. Архів оригіналу за 4 жовтня 2020. Процитовано 28 січня 2022.
Посилання[ред. | ред. код]
- Wikipedia API [Архівовано 5 грудня 2006 у Wayback Machine.]
|
Це незавершена стаття про програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |