Interfejs programowania aplikacji: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
drobne techniczne
źródła/przypisy
Linia 1: Linia 1:
'''Interfejs programowania aplikacji''', '''interfejs programistyczny aplikacji''', '''API''' (od {{W języku|en|application programming interface}}) – sposób, rozumiany jako ściśle określony zestaw reguł i ich opisów, w jaki [[program komputerowy|programy komputerowe]] komunikują się między sobą<ref>{{Cytuj stronę |url = http://www.webopedia.com/TERM/A/API.html |tytuł = What is Application Program Interface (API)? |nazwisko = Beal |imię = Vangie |opublikowany = Webopedia.com |język = en |archiwum = http://web.archive.org/web/20150616135419/http://www.webopedia.com/TERM/A/API.html |zarchiwizowano = 2015-06-16 |data dostępu = 2015-06-16}}</ref>.
'''Application Programming Interface''' ('''API''') – zbiór reguł ściśle opisujący, w jaki sposób [[Program komputerowy|programy]] lub podprogramy komunikują się ze sobą<ref>{{Cytuj stronę |url = https://dane.gov.pl/media/ckeditor/2018/12/05/standard-api_03-12-2018.pdf |tytuł = Standard API (interfejsu programistycznego aplikacji) |język = pl |strony = 3 | data dostępu = 2020-03-11}}</ref>.


Definiuje się go na poziomie [[kod źródłowy|kodu źródłowego]] dla składników oprogramowania, na przykład [[oprogramowanie użytkowe|aplikacji]], [[biblioteka programistyczna|bibliotek]], [[system operacyjny|systemu operacyjnego]]. Zadaniem interfejsu programowania aplikacji jest dostarczenie odpowiednich specyfikacji [[podprogram]]ów, [[struktura danych|struktur danych]], [[klasa (programowanie obiektowe)|klas obiektów]] i wymaganych [[protokół komunikacyjny|protokołów komunikacyjnych]].
Definiuje się go na poziomie [[kod źródłowy|kodu źródłowego]] dla składników oprogramowania, na przykład [[oprogramowanie użytkowe|aplikacji]], [[biblioteka programistyczna|bibliotek]], [[system operacyjny|systemu operacyjnego]]. Zadaniem interfejsu programowania aplikacji jest dostarczenie odpowiednich specyfikacji [[podprogram]]ów, [[struktura danych|struktur danych]], [[klasa (programowanie obiektowe)|klas obiektów]] i wymaganych [[protokół komunikacyjny|protokołów komunikacyjnych]].
Linia 7: Linia 7:
Co więcej, istnieją API, które zostały zdefiniowane w sposób niezależny od danej platformy (systemu operacyjnego, języka programowania), dla których istnieje możliwość wygenerowania API dla specyficznej platformy. Takie interfejsy definiuje się zwykle używając [[Interface Description Language|języków opisu interfejsów]] (ang. ''interface description language,'' IDL'').''<ref>Przykładem znanego języka IDL jest [https://www.corba.org/omg_idl.htm OMG IDL] dla systemu [[Common Object Request Broker Architecture|CORBA]] {{lang|en}}.</ref>
Co więcej, istnieją API, które zostały zdefiniowane w sposób niezależny od danej platformy (systemu operacyjnego, języka programowania), dla których istnieje możliwość wygenerowania API dla specyficznej platformy. Takie interfejsy definiuje się zwykle używając [[Interface Description Language|języków opisu interfejsów]] (ang. ''interface description language,'' IDL'').''<ref>Przykładem znanego języka IDL jest [https://www.corba.org/omg_idl.htm OMG IDL] dla systemu [[Common Object Request Broker Architecture|CORBA]] {{lang|en}}.</ref>


Przykładowe API to [[POSIX]] (API zdefiniowane w [[C (język programowania)|jęz. C]]) i [[Windows API]] (API zdefiniowane w jęz. C)<ref name="petzold_windows">Charles Petzold, ''Programowanie Windows. Kompletny podręcznik Win32 API do Windows 95/98/NT. Wydanie II'', Wydawnictwo RM.</ref>, a w przypadku [[Grafika 3D|grafiki 3D]] – [[Vulkan (API)|Vulkan]] (API zdefiniowane dla [[C (język programowania)|jęz. C]], z wieloma tzw. bindingami m.in. dla [[C++|jęz. C++]], [[Rust (język programowania)|jęz. Rust]] i innych) oraz [[OpenGL]]<ref>[http://www.opengl.org/ OpenGL – The Industry’s Foundation for High Performance Graphics] {{lang|en}}.</ref> (API zdefiniowane dla wielu języków, m.in. C, C++, [[Java]], [[Python]]).
Przykładowe API to [[POSIX]] (API zdefiniowane w [[C (język programowania)|jęz. C]]) i [[Windows API]] (API zdefiniowane w jęz. C)<ref name="petzold_windows">Charles Petzold, ''Programowanie Windows. Kompletny podręcznik Win32 API do Windows 95/98/NT. Wydanie II'', Wydawnictwo RM.</ref>, a w przypadku [[Grafika 3D|grafiki 3D]] – [[Vulkan (API)|Vulkan]] (API zdefiniowane dla jęz. C, z wieloma tzw. bindingami m.in. dla [[C++|jęz. C++]], [[Rust (język programowania)|jęz. Rust]] i innych) oraz [[OpenGL]]<ref>[http://www.opengl.org/ OpenGL – The Industry’s Foundation for High Performance Graphics] {{lang|en}}.</ref> (API zdefiniowane dla wielu języków, m.in. C, C++, [[Java]], [[Python]]).


== API webowe ==
== API webowe ==

Wersja z 13:51, 11 mar 2020

Application Programming Interface (API) – zbiór reguł ściśle opisujący, w jaki sposób programy lub podprogramy komunikują się ze sobą[1].

Definiuje się go na poziomie kodu źródłowego dla składników oprogramowania, na przykład aplikacji, bibliotek, systemu operacyjnego. Zadaniem interfejsu programowania aplikacji jest dostarczenie odpowiednich specyfikacji podprogramów, struktur danych, klas obiektów i wymaganych protokołów komunikacyjnych.

Definicja API może być niezależna od jego implementacji. Przykładowo, istnieje wiele realizacji API biblioteki standardowej języka C, które współdzielą standardową zewnętrzną funkcjonalność (są to m.in. wersja z systemu BSD oraz wersja z systemu GNU[2]).

Co więcej, istnieją API, które zostały zdefiniowane w sposób niezależny od danej platformy (systemu operacyjnego, języka programowania), dla których istnieje możliwość wygenerowania API dla specyficznej platformy. Takie interfejsy definiuje się zwykle używając języków opisu interfejsów (ang. interface description language, IDL).[3]

Przykładowe API to POSIX (API zdefiniowane w jęz. C) i Windows API (API zdefiniowane w jęz. C)[4], a w przypadku grafiki 3DVulkan (API zdefiniowane dla jęz. C, z wieloma tzw. bindingami m.in. dla jęz. C++, jęz. Rust i innych) oraz OpenGL[5] (API zdefiniowane dla wielu języków, m.in. C, C++, Java, Python).

API webowe

 Osobny artykuł: WebAPI.

Jednym z typów interfejsów API, które przebiły się do szerszej świadomości, są API webowe (ang. web APIs), zwane też API internetowymi. Jest to rodzaj interfejsów API, w których funkcje są udostępniane jako zasób w sieci. Bieżące wersje systemów API webowych pozwalają w bardzo łatwy sposób integrować informacje z sieci z aplikacjami, poszerzając ich funkcje lub umożliwiając współdziałać (np. z sieciami społecznościowymi)[6].

Przykłady

W języku C definicja interfejsu programistycznego aplikacji to składa się przede wszystkim z listy dostępnych funkcji (w formie prototypów funkcji), wraz z towarzyszącymi im przeważnie definicjami stałych, zmiennych oraz struktur danych, które mogą być użyte jako ich parametry. Przykładowa lista prototypów funkcji z API biblioteki standardowej języka C (plik nagłówkowy <stdio.h>) to:

int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);

W prototypach funkcji (printf, fprintf, sprintf, snprintf) użyte są identyfikatory struktur i typów (FILE i size_t), które są również częścią definicji API (ich definicja nie została zamieszczona w przykładzie).

Przykład użycia jednej z powyższych funkcji z API jest następujący:

return printf("Hello world");

Zobacz też

Przypisy

  1. Standard API (interfejsu programistycznego aplikacji). s. 3. [dostęp 2020-03-11]. (pol.).
  2. Biblioteka standardowa jęz. C w wersji GNU (ang.).
  3. Przykładem znanego języka IDL jest OMG IDL dla systemu CORBA (ang.).
  4. Charles Petzold, Programowanie Windows. Kompletny podręcznik Win32 API do Windows 95/98/NT. Wydanie II, Wydawnictwo RM.
  5. OpenGL – The Industry’s Foundation for High Performance Graphics (ang.).
  6. Daniel Jacobson, Dan Woods, Greg Brail, Interfejs API: Strategia programisty, Helion, Gliwice, 2015.