Czym jest API i jakie są jego rodzaje?

miroslawmamczur.pl 1 rok temu

Tato, co robisz? – Jagoda z Otylką wpadły jak huragan do mojego pokoju.

Staram się napisać API dla modelu przewidującego, czy klient zechce odejść z firmy.

– Hmm, to brzmi bardzo tajemniczo! – stwierdziła Jagódka.

– A co to apiiiiii? – zapytała Otylka.

Hmm… Wyobraźcie sobie, iż poszliśmy razem z mamą do restauracji z pysznym jedzeniem i chcecie zamówić swoje ulubione dania. Jednak nie możecie wejść do kuchni i ugotować to, na co macie ochotę. Prawda?

Niestety jeszcze nie umiemy tak dobrze gotować.

– Właśnie. Możemy jednak poprosić kelnera o menu, wybrać i zamówić dania. Kelner to trochę takie API. Przekazuje nasze zamówienie do kuchni (serwera). A następnie otrzymujemy odpowiedź w postaci pysznego jedzenia (odpowiedź serwera).

Aha! Czyli API to taki pośrednik, który pomaga nam dostać to, czego chcemy? – zrozumiała Jagódka.

Dokładnie! API to taki specjalny sposób, za pomocą którego różne programy czy aplikacje mogą ze sobą rozmawiać i współpracować. Pomaga nam uzyskać potrzebne informacje i dane, tak jak kelner pomaga nam dostać jedzenie z kuchni.

Czym jest API?

API (ang. Application Programming Interface) to zestaw reguł, protokołów i narzędzi, które umożliwiają interakcję między różnymi oprogramowaniami. API definiuje sposób, w jaki programy komunikują się między sobą, pozwalając na wymianę danych i żądań.

Dzięki API programiści mogą tworzyć oprogramowanie, które wykorzystuje funkcjonalność innych programów lub serwisów, bez konieczności rozumienia i modyfikowania wewnętrznych szczegółów tych systemów.

Z perspektywy technicznej, API to kod, który zarządza wszystkimi punktami dostępowymi w aplikacji lub serwerze. Kiedy wysyłamy zewnętrzne żądanie do tych serwerów, API działa jak tłumacz, który przekazuje te żądania do aplikacji i pozwala jej na przesłanie odpowiedzi z powrotem. Innymi słowy, Interfejs Programowania Aplikacji pełni rolę pośrednika, który umożliwia komunikację między zewnętrznymi systemami a aplikacją oraz przekazuje informacje zwrotne od aplikacji do nas.

API może mieć różne formy, w zależności od kontekstu. Może to być interfejs programistyczny, który udostępnia zestaw funkcji i procedur do programowania aplikacji. Może być również interfejsem sieciowym, który pozwala na komunikację między systemami przez sieć, używając protokołów takich jak HTTP. API może także obejmować standardy komunikacji, formaty danych oraz metody uwierzytelniania i autoryzacji.

Historia powstania API

Historię powstania API możemy podzielić na 7 okresów.

1. Pierwsza idea (lata ‘40-’50)

Idea API istnieje od dłuższego czasu niż sam termin. W latach czterdziestych XX wieku brytyjscy informatycy Maurice Wilkes i David Wheeler pracowali nad modułową biblioteką systemu dla EDSAC, czyli wczesnego komputera. Zastosowali w niej podprogramy, które były przechowywane na perforowanej taśmie papierowej, ułożonej w szafce na akta. W tej samej szafce znalazło się także coś, co Wilkes i Wheeler nazwali „katalogiem bibliotecznym”. Były to notatki zawierające informacje o każdym podprogramie oraz sposób, w jaki należy go użyć w programie. W dzisiejszych czasach taki „katalog” byłby nazywany interfejsem API (lub specyfikacją interfejsu API lub dokumentacją interfejsu API), ponieważ dostarcza on programistom instrukcji dotyczących korzystania (lub wywoływania) poszczególnych podprogramów, których potrzebują.

2. Pierwsze wzmianki o API (lata ‘60 – ‘70)

Termin „Application Program Interface” (bez przyrostka -ing) został po raz użyty w artykule zatytułowanym „Data structures and techniques for remote computer graphics” na konferencji AFIPS w 1968 roku. Jego autorzy używają terminu API w kontekście opisu sposobu, w jaki program graficzny współdziała z resztą systemu komputerowego. Dzięki spójnemu interfejsowi aplikacji, który składa się z wywołań podprogramów w języku Fortran, programista był w stanie uniknąć bezpośredniego angażowania się w szczegóły dotyczące urządzenia wyświetlającego grafikę.

Christopher J. Date wprowadził termin API do baz danych w artykule z 1974 roku, zatytułowanym: „The relational and network Approaches: Comparison of the Application Programming Interface.” W ramach struktury dla systemów zarządzania bazami danych, API stało się integralną częścią. Ta struktura rozróżniała interface programowania aplikacji od innych interfejsów, takich jak interface zapytań.

3. Początki interfejsów programistycznych (lata ‘80)

Historia interfejsów programistycznych (API) sięga początków rozwoju systemów operacyjnych. Pierwsze API powstawały w celu umożliwienia programistom tworzenia aplikacji, które działały na określonych platformach. Na przykład w 1983 roku Apple wprowadziło Macintosh Toolbox API dla systemu operacyjnego Macintosh. API systemu operacyjnego było pierwotnie stosowane do komunikacji z urządzeniami i funkcjami systemowymi.

4. Ewolucja API w erze internetu (lata ‘90)

Rozwój Internetu w latach 90. XX wieku przyniósł nowe możliwości integracji i wymiany danych. Pojawiły się pierwsze API internetowe, które umożliwiały komunikację między różnymi aplikacjami internetowymi. Protokoły takie jak Simple Object Access Protocol (SOAP) i XML-RPC umożliwiły wywoływanie zdalnych procedur i wymianę danych w formacie XML. Te technologie stały się podstawą dla rozwoju dalszych rozwiązań API.

5. REST i nowa era architektury API (przełom XX i XXI)

W 2000 roku Roy Fielding wprowadził koncepcję architektury Representational State Transfer (REST). REST opiera się na wykorzystaniu standardowych metod HTTP takich jak GET czy POST, do operacji na zasobach. Ta architektura API stała się popularna ze względu na swoją prostotę, skalowalność i łatwość implementacji. REST umożliwił tworzenie elastycznych i zdecentralizowanych systemów, które mogą być łatwo integrowane.

6. Eksplozja API społecznościowych

Wraz z pojawieniem się mediów społecznościowych, takich jak Facebook, Twitter i LinkedIn, nastąpił rozwój API społecznościowych. Firmy zaczęły udostępniać API, które umożliwiały programistom tworzenie aplikacji korzystających z funkcji tych serwisów. API społecznościowe umożliwiły tworzenie nowych społecznościowych platform, integrację z istniejącymi aplikacjami i zwiększenie ich funkcjonalności.

7. API w erze chmurowej i mikroserwisów

Ostatnie lata przyniosły eksplozję technologii chmurowych i architektur mikroserwisów. Wraz z tym rozwojem, API stało się kluczowym elementem tworzenia i zarządzania aplikacjami w chmurze. Duże platformy chmurowe, takie jak Amazon Web Services (AWS), Google Cloud Platform (GCP) i Microsoft Azure, udostępniają bogate API, które umożliwiają programistom dostęp do różnych usług i funkcji w chmurze.

Rodzaje API

API można podzielić na różne sposoby, w zależności od przyjętych kryteriów. Poniżej przedstawiłem 4 najczęściej stosowane.

A. Podział ze względu na zastosowanie:
  • publiczne API – udostępniane publicznie przez firmy lub organizacje, umożliwiają programistom korzystanie z ich usług i funkcji,
  • prywatne API – stworzone wewnętrznie w firmach lub organizacjach, służą do integracji wewnętrznych systemów i aplikacji,
  • partnerskie API – udostępniane dla partnerów biznesowych, umożliwiają współpracę i integrację między partnerami.
B. Podział ze względu na protokół komunikacyjny:
  • RESTful API – wykorzystuje protokół HTTP do komunikacji między klientem a serwerem, opierając się na standardowych metodach HTTP, takich jak GET, POST, PUT, DELETE,
  • SOAP API – wykorzystuje protokół SOAP (Simple Object Access Protocol) do komunikacji między klientem a serwerem, opierając się na formatowaniu danych w XML i korzystając z protokołu HTTP lub innych protokołów transportowych,
  • GraphQL API – wykorzystuje język zapytań GraphQL do komunikacji między klientem a serwerem, umożliwiając klientowi precyzyjne określenie potrzebnych danych.
C. Podział ze względu na format danych:
  • JSON API – wykorzystuje format danych JSON (JavaScript Object Notation) do przesyłania danych między klientem a serwerem,
  • XML API – wykorzystuje format danych XML (Extensible Markup Language) do przesyłania danych między klientem a serwerem.
D. Podział ze względu na dostępność:
  • Web API – udostępniane przez serwery internetowe, umożliwiają interakcję z aplikacjami dzięki przeglądarki internetowej,
  • Mobile API – udostępniane przez platformy mobilne, umożliwiają interakcję z aplikacjami na urządzeniach mobilnych, takich jak telefony i tablety,
  • Desktop API – udostępniane dla aplikacji desktopowych, umożliwiają interakcję z aplikacjami na komputerach.

Natomiast dzisiejszym tzw. industry standard, czyli standardem stał się REST API i formaty JSONowe, więc je omówię dokładniej.

REST API

REST (Representational State Transfer) to styl architektury API, który opiera się na wykorzystaniu standardowych metod HTTP do operacji na zasobach.

Poniżej najważniejsze metody używane w REST API (przyznam, iż ja głównie używałem GET i POST).

GET

Metoda GET używana jest do pobierania danych z zasobu. Przesyła zapytanie do serwera i otrzymuje odpowiedź w postaci żądanych danych. Na przykład używając metody GET na adresie URL „/users_list”, można pobrać listę użytkowników.

POST

Metoda POST służy do tworzenia nowych zasobów. Przesyła dane do serwera, które są wykorzystywane do utworzenia nowego zasobu. Na przykład używając metody POST na adresie URL „/add_new_user”, można utworzyć nowego użytkownika, przekazując dane użytkownika w body request.

PUT

Metoda PUT jest używana do aktualizacji istniejącego zasobu lub tworzenia nowego zasobu, jeżeli nie istnieje. Przesyła dane do serwera, które są używane do zaktualizowania lub utworzenia zasobu. Na przykład używając metody PUT na adresie URL „/users_list/13”, można zaktualizować informacje o użytkowniku o identyfikatorze 13.

DELETE

Metoda DELETE służy do usuwania istniejącego zasobu. Przesyła żądanie do serwera w celu usunięcia zasobu. Na przykład używając metody DELETE na adresie URL „/users_list/123”, można usunąć użytkownika o identyfikatorze 123.

PATCH

Metoda PATCH jest używana do częściowej aktualizacji istniejącego zasobu. Przesyła dane do serwera, które zawierają jedynie zmienione pola lub adekwatności zasobu. Na przykład używając metody PATCH na adresie URL „/users/101”, można zaktualizować tylko wybrane pola użytkownika o identyfikatorze 101.

OPTIONS

Metoda OPTIONS jest używana do pobierania informacji o dostępnych metodach i możliwościach zasobu. Przesyła żądanie do serwera, a serwer zwraca informacje o dostępnych metodach HTTP, nagłówkach, uwierzytelnianiu itp.

Te metody HTTP są powszechnie używane w REST API do wykonywania różnych operacji na zasobach. Oprócz tych podstawowych metod, można również zaimplementować niestandardowe metody, które odpowiadają specyficznym działaniom aplikacji.

Przykłady API

Jestem przekonany, iż za każdym razem kiedy otrzymujesz szukane informacje, pod spodem wykorzystane są dziesiątki API, np.:

  1. API mediów społecznościowych – platformy takie jak Twitter i Facebook korzystają z interfejsów API, aby umożliwić programistom tworzenie aplikacji i botów, które mogą komunikować się z użytkownikami, publikować treści, pobierać dane profilu i wiele innych,
  2. API logowania i uwierzytelniania – wiele aplikacji oferuje możliwość logowania przy użyciu innych kont, takich jak Apple czy Google; dzięki interfejsom API można uwierzytelniać użytkowników i zarządzać ich danymi,
  3. API usługowe – dostawcy usług, takich jak prognoza pogody, mapy, kanały informacyjne, korzystają z interfejsów API, aby udostępniać swoje usługi innym platformom i aplikacjom; na przykład popularne witryny informacyjne mogą wykorzystywać interfejsy API do pobierania aktualnych wiadomości,
  4. API finansowe i płatnicze – banki i platformy płatności, takie jak Stripe i PayPal, oferują interfejsy API, które umożliwiają przetwarzanie płatności, sprawdzanie salda konta, inicjowanie przelewów i wiele innych operacji finansowych,
  5. API podróżcze – witryny i aplikacje oferujące rezerwację hoteli, lotów czy wynajem samochodów korzystają z interfejsów API, aby uzyskać dostęp do danych o dostępności, cenach i innych szczegółach, umożliwiając użytkownikom łatwą i szybką rezerwację.

API vs Interfejs API

Ah, jeszcze jedno. W języku polskim terminy „API” i „interfejs API” są często używane zamiennie, ale istnieje pewna subtelna różnica między nimi.

API jest ogólnym pojęciem, które opisuje zasady i narzędzia umożliwiające komunikację między aplikacjami, podczas gdy interfejs API to konkretna implementacja API. Interfejs API jest zestawem punktów końcowych (endpointów), metod i zasad komunikacji, które programiści mogą wykorzystać do komunikacji z danym systemem lub aplikacją.

Mam nadzieję, iż teraz pojęcie API będzie dla Was bardziej zrozumiałe.

Pozdrawiam z całego serducha,

Bibliografia
Idź do oryginalnego materiału