edulab

Czym jest API

Aplikacje rzadko działają same. Pobierają dane od innych programów przez interfejs, który nazywa się API. Pokazujemy, jak ta rozmowa wygląda od środka.

Kiedy portal z wiadomościami pokazuje temperaturę za oknem, nie ma własnego termometru. Pyta o nią inny program - serwis pogodowy, który gdzieś trzyma bazę pomiarów z całego świata i udostępnia ją na żądanie. Mechanizm takiego pytania nazywa się API: skrót od Application Programming Interface. Po polsku: interfejs, przez który jeden program rozmawia z drugim.

Najprostsza analogia to restauracja. Siedzisz przy stoliku i nie wchodzisz do kuchni. Zamiast tego podajesz zamówienie kelnerowi, a on wraca z gotowym daniem. Kuchnia nigdy Cię nie widziała; zna tylko zamówienie zapisane na kartce. API pełni rolę takiego kelnera: przyjmuje pytanie, zanosi je we właściwe miejsce i wraca z odpowiedzią.

W internecie ta rozmowa toczy się zwykle w kilku krokach i trwa setki milisekund. Klient (na przykład strona otwarta w przeglądarce) wysyła zapytanie pod konkretny adres, taki jak /api/weather?city=Warszawa. Serwer odbiera je, odszukuje pasujące dane i odsyła odpowiedź w uzgodnionym formacie; dzisiaj prawie zawsze jest to JSON, czyli prosty zapis tekstowy, czytelny zarówno dla człowieka, jak i dla maszyny. Demonstracja niżej pokazuje tę wymianę krok po kroku.

Jak strona internetowa pobiera pogodę z serwera

W pierwszym panelu jest strona portalu Daily News otwarta w przeglądarce. Nie ma własnych pomiarów, więc musi o nie poprosić; w języku API nazywamy ją klientem. W ostatnim pracuje serwer pogodowy: program bez ekranu, który trzyma bazę pomiarów. Między nimi widać dwie wiadomości: niebieskie zapytanie od strony do serwera i zieloną odpowiedź od serwera do strony. Wybierz miasto na stronie albo kliknij Wyślij zapytanie i obserwuj, jak liczba z bazy serwera trafia na ekran.

Klient Strona internetowa
Daily News – wiadomości
https://dailynews.example.com

Pogoda

Wybierz miasto – strona zapyta serwer pogodowy.

Wybory · Tekst dnia

Rekordowa frekwencja w wyborach lokalnych

Przed lokalami wyborczymi ustawiały się kolejki. W wielu gminach zabrakło kart do głosowania.

Redakcja · 2 godz. temu
SportLegia wygrywa 3:1 w emocjonującym meczu
KulturaNowy musical bije rekordy kasowe
WarszawaJesień w stolicy: ruszają prace nad nowym bulwarem
Internet Zapytanie i odpowiedź
Zapytanie strona → serwer
Odpowiedź serwer → strona
Serwer Serwer pogodowy
weather-api.example.com
baza pomiarów
Online
Baza pomiarów
Miasto°CWilg.Stan
Co robi serwer

    Co się właśnie wydarzyło

    W ułamku sekundy odbyła się pełna rozmowa między dwoma programami. Strona portalu sformułowała pytanie (daj mi pogodę dla Warszawy) i wysłała je pod konkretny adres serwera pogodowego. Serwer odszukał rekord, opakował go w odpowiedź i odesłał z powrotem. Strona rozpakowała paczkę i wstawiła liczby do widżetu pogody. Cała wymiana zmieściła się w czasie krótszym od mrugnięcia okiem.

    Żadna z tych dwóch stron nie musiała wiedzieć, jak dokładnie działa ta druga. Serwer nie zna wyglądu portalu; portal nie zna struktury bazy danych pogodowej. Łączy je tylko kontrakt - z góry uzgodniony format pytań i odpowiedzi. To właśnie jest siła tego mechanizmu: pozwala budować duże systemy z mniejszych, niezależnych części, które potrafią się ze sobą porozumieć.

    Dlaczego ten sposób się przyjął

    Współczesne aplikacje rzadko są samowystarczalne. Aplikacja do zamawiania jedzenia woła API restauracji, banku i kuriera w trakcie jednego zamówienia. Mapa w telefonie korzysta jednocześnie z API dostawcy mapy, ruchu drogowego i wyszukiwania adresów, a potem scala je w jeden spójny widok. Każde kliknięcie „udostępnij" w portalu społecznościowym to wywołanie API. Liczba takich rozmów w internecie idzie w biliony dziennie.

    To wszystko działa, bo po jednej stronie linii jest proste pytanie, a po drugiej prosta odpowiedź. Reszta, czyli sieć, serwery, bazy danych i programiści, którzy to wszystko piszą, chowa się pod warstwą interfejsu. Tak jak w restauracji: nie musisz znać przepisu na zupę, żeby ją zamówić. Wystarczy, że obie strony rozumieją menu.

    Czego nie widać w tej demonstracji

    Pominęliśmy kilka rzeczy, które w prawdziwej aplikacji są istotne. Uwierzytelnianie: prawdziwe zapytanie zwykle niesie klucz API, na przykład w nagłówku X-API-Key. Serwer sprawdza go, zanim zajrzy do bazy, a bez ważnego klucza odpowie 401 Unauthorized. Pamięć podręczna: identyczne pytanie zadane drugi raz dostaje odpowiedź z pamięci, bez schodzenia do bazy. Błędy: serwer może nie odpowiedzieć w ogóle, odpowiedzieć źle albo być przeciążony. Każdy z tych tematów to osobny artykuł.

    Format JSON, w którym wraca odpowiedź, wygrał wśród API z prostego powodu: jest czytelny dla człowieka i jednocześnie trywialny do przetworzenia przez maszynę. Wcześniej w użyciu był XML - ten sam pomysł, ale dużo bardziej rozwlekły. Dzisiaj prawie każde nowe API mówi w JSON-ie.