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

m
źródła/przypisy, drobne redakcyjne, int.
m (źródła/przypisy, int.)
m (źródła/przypisy, drobne redakcyjne, int.)
'''Interfejs programowania aplikacji'''<ref name=Standard_API /><ref name=dyrektywa>Dyrektywa Parlamentu Europejskiego i Rady (UE) 2018/1972 z dnia 11 grudnia 2018 r. ustanawiająca Europejski kodeks łączności elektronicznej ({{CELEX|32018L1972}}).</ref><ref>{{Cytuj stronę |url = https://monitorfx.pl/api/ |tytuł = Interfejs programowania aplikacji (API) |data dostępu = 2020-04-19 | opublikowany = MonitorfFX}}</ref><ref>{{Cytuj stronę |url = https://pclab.pl/art17356-2.html |tytuł = Słowniczek pojęć |data dostępu = 2020-04-19 | opublikowany = PCLab}}</ref><ref>{{Cytuj stronę |url = http://www.itcmp.pwr.wroc.pl/~jwach/Techniczny%20EN-PL.htm |tytuł = Słownik Politechniki Wrocławskiej |data dostępu = 2020-04-19 | opublikowany = itcmp.pwr.wroc }}</ref><ref>{{Cytuj stronę |url = https://support.google.com/adsense/answer/32755?hl=pl |tytuł = Słowniczek. Interfejs API |data dostępu = 2020-04-19 | opublikowany = google.com}}</ref>, '''interfejs programistyczny aplikacji'''<ref name=Standard_API>{{Cytuj stronę |url = https://www.gov.pl/web/popcwsparcie/standard-api-dla-udostepniania-danych |tytuł = Standard API dla udostępniania danych |data dostępu = 2020-03-11}}</ref><ref>{{Cytuj stronę |url = https://mc.bip.gov.pl/rok-2017-2018-2019/ekspertyza-minimalne-rekomendowane-zalecenia-dotyczace-interfejsu-programistycznego-aplikacji-dostepu-do-baz-danych-przechowujacych-zasoby-publiczne.html |tytuł = Ekspertyzy dotyczące standardów otwartości danych publicznych |data dostępu = 2020-04-19 | opublikowany = Ministerstwo Cyfryzacji}}</ref><ref>{{Cytuj stronę |url = https://biznes.interia.pl/gospodarka/news-testowe-preludium-psd2-w-bankach,nId,4198632 |tytuł = Testowe preludium PSD2 w bankach |data dostępu = 2020-04-19 | opublikowany = Interia Biznes}}</ref>, '''interfejs programu aplikacyjnego'''<ref name=dyrektywa /><ref>Ustawa z dnia 16 lipca 2004 – [[Prawo telekomunikacyjne]] ({{Dziennik Ustaw|2019|2460}}).</ref>, skrótowiec '''API''' (od [[język angielski|ang.]] ''application programming interface'') – zbiór reguł ściśle opisujący, w jaki sposób [[Program komputerowy|programy]] lub podprogramy komunikują się ze sobą<ref name=API>{{Cytuj stronę |url = https://dane.gov.pl/media/ckeditor/2018/12/05/standard-api_03-12-2018.pdf |tytuł = Standard API (interfejsu programistycznego aplikacji) |strony = 3 |data dostępu = 2020-03-11}}</ref>.
 
API jest przede wszystkim specyfikacją wytycznych, jak powinna przebiegać interakcja między komponentami programowymi. Implementacja API jest zestawem rutyn, protokołów i rozwiązań informatycznych do budowy aplikacji komputerowych. Dodatkowo API może korzystać z komponentów [[Graficzny interfejs użytkownika|graficznego interfejsu użytkownika]] (GUI). Dobre API ułatwia budowę oprogramowania, sprowadzając ją do łączenia przez programistę bloków elementów w ustalonej konwencji<ref>{{Cytuj stronę |url = https://www.gov.pl/attachment/ae0e670a-d16d-443d-a994-55727e18288b |tytuł = OD.API standardy interfejsu programistycznego aplikacji |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]].
Definicja API może być niezależna od jego implementacji. Przykładowo, istnieje wiele realizacji API [[Biblioteka standardowa języka C|biblioteki standardowej języka C]], które współdzielą standardową zewnętrzną funkcjonalność (są to m.in. wersja z systemu [[Berkeley Software Distribution|BSD]] oraz wersja z systemu [[GNU]]<ref>[https://www.gnu.org/software/libc/ Biblioteka standardowa jęz. C w wersji GNU] {{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ę, używając zwykle używając [[Interfacejęzyk Descriptionopisu Languageinterfejsu|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 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]]).
 
Jednym z typów interfejsów API, które przebiły się do szerszej świadomości, są [[WebAPI|API webowe]] ({{Wang. języku|en|''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)<ref name="jacobson_et_al">Daniel Jacobson, Dan Woods, Greg Brail, ''Interfejs API: Strategia programisty'', Helion, Gliwice, 2015.</ref>.
 
== Przykłady ==