API – okno na świat aplikacji?


IT, IT-DLA-ZIELONYCH / wtorek, 24 września, 2019

API to interfejs programistyczny aplikacji (z angielskiego application programming interface). Jest bez wątpienia pojęciem, które warto rozumieć. W mądrej encyklopedycznej definicji Wikipedii czytamy, że API to określony zestaw reguł i ich opisów, w jaki programy komputerowe komunikują się między sobą . Ale co to tak naprawdę znaczy?

Ja powiedziałabym, że API to programistyczne okno na świat. Definiuje możliwe formy interakcji z programem komputerowym. Swoje API mogą mieć aplikacje, biblioteki, systemy operacyjne…

API webowe

My spróbujemy zrozumieć zasadę działania API na podstawie API webowego. Wyobraźmy sobie aplikację backendową, która dotyczy przychodni lekarskiej. Za jej pomocą możemy rejestrować nowych pacjentów, edytować dane tych, którzy już z nami współpracują, umawiać ich na wizyty i utrzymywać dane pracujących u nas lekarzy. Aby to wszystko było możliwe, musi to umożliwiać API tej aplikacji. API, a więc zbiór metod, które dotyczą takich czynności jak zaktualizuj dane o pacjencie, dodaj nową wizytę dla pacjenta X u lekarza Y, pobierz wszystkie wizyty obsługiwane przez lekarza X w dniu Y itd. Istotne do zapamiętania jest, iż tylko to, co określone w API będzie możliwe do wykonania przy pomocy tej aplikacji. Jeśli w API nie mamy przewidzianej metody dotyczącej np. przypisywania e-recept do określonego pacjenta, nie będziemy mogli zapisać jej w bazie danych. Nawet jeśli w samej bazie istniałaby tabela temu dedykowana. No, chyba, że spróbowalibyśmy ominąć aplikację backendową i zrobić to z poziomu samej bazy. Normalnie jednak aplikacje klienckie nie mają takiej możliwości.

Dzięki API nie interesują nas „wnętrzności” danej aplikacji, jej cała baza kodowa. Nie mamy do niej dostępu. Jedyne, z czego możemy korzystać, to to, co wystawione w API.

Sygnał ostrzegawczy dla project managera

Chciałabym Wam zwrócić uwagę na jedną istotną rzecz. Wyobraźmy sobie realizację projektu, na który składają się więcej niż jedna aplikacja. Na przykład osobna aplikacja obsługująca jakieś urządzenie hardwarowe, która przesyła informacje do naszej części softwarowej z bazą danych plus powiedzmy frontend z interfejsem użytkownika. W trakcie realizacji takich projektów możecie zauważyć, że pracę rozpoczyna się zazwyczaj od zaprojektowania architektury systemu, w tym również ustalenia APIs. APIs, czyli sposobów, zasad komunikacji pomiędzy tymi aplikacjami. Potem każdy z zespołów może już pracować spokojnie na swoim podwórku przestrzegając ustalonych „punktów styku”.

Oczywiście jest to sytuacja idealna i w codziennym życiu interfejsy komunikacji ulegają zmianom i rozszerzeniom przez cały czas życia projektu. Jeśli więc usłyszycie, że coś musi zostać zmienione w API aplikacji, traktujcie to jako sygnał, że ta zmiana może być poważna. Pociąga bowiem za sobą zmiany na poziomie całego systemu, w co najmniej dwóch zespołach.

API biblioteki

Podobnie API może mieć biblioteka. Programiści korzystają z bibliotek pisząc nowe aplikacje, aby nie wyważać otwartych drzwi. Mamy więc przykładowo bibliotekę umożliwiającą drag&drop elementów layoutu, bibliotekę do internacjonalizacji strony (czyli możliwości obsługi w różnych językach) i wiele wiele innych. Dzięki temu, że biblioteki są reużywalne, developerzy nie muszą pisać wszystkiego od zera.

Co zawiera API biblioteki? Takie API definiuje funkcjonalności, jakie biblioteka dostarcza oraz sposób ich używania. Na przykład API biblioteki do rysowania wykresów będzie między innymi miało metodę przyjmującą rodzaj wykresu i dane. Być może również tekst będący tytułem wykresu. Co jednak, jeśli chcielibyśmy zmienić czcionkę tego tytułu? Jeśli nie udostępnia nam tego API tej biblioteki nic nie wymyślimy. Programista nie będzie mógł się do tego dostać i wpłynąć na tę zmianę, gdyż tej funkcjonalności nie ma przewidzianej w API. Wtedy padają różne pomysły, z których każdy daleki jest od ideału. Co w przypadku, gdy biblioteka jest bardzo mała? Można na przykład skopiować jej kod i dołączyć do projektu, wprowadzając jednocześnie wszystkie potrzebne zmiany w API ( w naszym przypadku dodając metodę umożliwiającą zmianę czcionki tytułu wykresu). Inną znaną praktyką w przypadku projektów open source’owych jest tzw. forkowanie (ang. fork) czyli kopiowanie kodu biblioteki i tworzenie z niego zupełnie osobnej wersji z wprowadzonymi modyfikacjami. Również z rozszerzonym API.

Rozumiejąc czym jest API, już tylko krok dzieli nas od popularnego pojęcia REST API– ciąg dalszy nastąpi 😉

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.