Spis treści
Czy kiedykolwiek zastanawiałeś się, w jaki sposób sprawić, aby różne interfejsy komunikowały się ze sobą? W biznesie często okazuje się to niezbędne, zwłaszcza jeżeli planujesz korzystać z usług podmiotów trzecich. Tak właśnie działa API (ang. Application Programming Interface). To zespół reguł i protokołów, dzięki którym software pochodzący od różnych dostawców może wymieniać między sobą informacje oraz dane. Prawidłowo wdrożony, interfejs API może ułatwić prowadzenie firmy, ponieważ zyskasz zupełnie nowe możliwości i narzędzia na potrzeby swojej działalności gospodarczej. Przeczytaj, czym jest REST API, jak działa i dlaczego warto wykorzystać go w biznesie.
Czym jest API?
Wspomniany już Application Programming Interface definiuje reguły, które muszą być przestrzegane, aby istniała możliwość połączenia się z danym systemem. Tworząc software przewidziany do świadczenia różnego rodzaju usług (od aplikacji z danymi giełdowymi do serwisów bankowych) programiści tworzą oraz ujawniają API, aby inne aplikacje mogły łączyć się z danym systemem na poziomie programistycznym na każde żądanie.
Dobrym przykładem jest np. elektroniczna ewidencja czasu pracy. Aby mogła ona funkcjonować, wbudowany API wysyła zapytanie o pełne dane pracownika oraz zakres dat w kalendarzu do modułu kadr i płac systemu ERP. Na tej podstawie jest w stanie wyliczyć liczbę godzin przepracowanych w danym miesiącu. Niekiedy interfejs API definiuje się jako bramę zapewniającą przejście między klientami a zasobami sieciowymi.
Kim jest klient w rozumieniu API?
Mianem klienta określa się użytkownika, który potrzebuje uzyskać dane z sieci. Takim użytkownikiem może być zarówno osoba fizyczna, jak i aplikacja. Załóżmy, że prowadzisz biuro księgowe, które wrzuca faktury do serwisu za pomocą którego rozliczasz klientów. Możesz każde zadanie wykonać manualnie albo sięgnąć do API programu i software’u OCR, które wymienią między sobą informacje. Nie trzeba wyjaśniać, który sposób zapewni większą efektywność działania.
Jak rozumieć pojęcie zasobu?
Na zasobach bazuje całe oprogramowanie API, ponieważ są to wszelkiego rodzaju dane udostępniane za pośrednictwem sieci. Zasobem może być tekst, wykres, grafika czy dane liczbowe. Zasoby są udostępniane klientom z serwera.
Organizacje korzystają z API właśnie do dzielenia się zasobami lub świadczenia usług online przy jednoczesnym zapewnieniu bezpieczeństwa oraz kontroli dostępu. Interfejs API pozwala na kontrolowanie kręgu osób mających dostęp do zasobów serwera.
REST API — co to znaczy i na czym polega ten interfejs?
REST API to skrót pochodzący od określenia Representational State Transfer API. W ten sposób nazywa się jednolity interfejs pozwalający na bezpieczną wymianę informacji między systemami komputerowymi za pośrednictwem sieci, który został zaprojektowany zgodnie z założeniami REST. Kiedy chcemy podkreślić, że dane API jest wykonane w zgodzie ze wszystkimi regułami REST, mówi się o RESTful API. W praktyce większość biznesów bazujących na infrastrukturze informatycznej opiera się na API, aby zapewnić przepływ danych zarówno wewnętrznie (między różnymi programami w obrębie tej samej firmy), jak i zewnętrznie (między oprogramowaniem firmowym a dostarczanym przez zewnętrznego dostawcę). Najprościej zrozumieć to na przykładzie.
Wyobraź sobie, że Twoja firma zatrudnia pracowników, którym co miesiąc wypłacasz wynagrodzenie na rachunki bankowe. Oczywiście możesz robić to ręcznie co — łącznie z wyliczeniem składek i ich odprowadzeniem do ZUS — zajmie Ci przynajmniej kilkadziesiąt minut na jedną osobę. Możesz też skorzystać z systemu księgowego, który łączy się z bankiem pracownika, ZUS-em i automatycznie realizuje wszystkie czynności. Wtedy zajmie Ci to jedynie tyle, ile trzeba, aby kilka razy kliknąć odpowiednie pola w systemie i wprowadzić kwotę wypłaty. Jeśli zatrudniasz jedną osobę, być może ta oszczędność czasu nie robi wrażenia, ale co, jeśli zatrudniasz ich 50?

Właśnie w tym celu potrzebny jest interfejs API, który wspiera wymianę informacji, gwarantując stabilne, wydajne, a co najważniejsze bezpieczne standardy komunikacyjne. Aby lepiej zrozumieć, jak działa REST API, rozbijmy tę technologię na czynniki pierwsze? Czym jest API i na czym polega usługa REST?
Na czym polega REST?
Representational State Transfer (REST) to architektura oprogramowania określająca konkretne warunki, zgodnie z którymi powinny pracować interfejsy API. Pierwotnie Representational State Transfer zostało zaprojektowane jako sieć wytycznych, według których miały funkcjonować złożone połączenia sieciowe, jak internet. Obecnie REST jest wykorzystywana, aby zapewnić wysoko wydajną oraz stabilną komunikację z jednoczesnym zachowaniem skalowalności. Można ją łatwo modyfikować oraz implementować zapewniając dostęp oraz międzyplatformową kompatybilność dla każdego systemu API.
Obecnie do tworzenia API wykorzystuje się kilka różnych architektur. Interfejs, który wykorzystuje schemat REST, określa się jako REST API lub RESTful API. Przyjrzyjmy się podstawowym regułom, na których opiera się REST API.
Jakie są ogólne zasady REST API?
Styl architektury REST API jest wyrażony poprzez sześć głównych filarów, które stanowią podwaliny tej technologii. Niezależnie od tego, jaką usługę internetową uruchamiasz, te elementy zawsze będą niezmienne.
Jednolity interfejs komunikacyjny (ang. Uniform interface)
Serwer powinien udostępniać API, które będzie rozumiane przez wszystkie łączące się z nim aplikacje, a zakres i format zwracanych danych powinien być taki sam. Aby było to możliwe, między innymi serwer musi zidentyfikować dany zasób biorący udział w komunikacji. Tym identyfikatorem (ang. Uniform Resource Identifier) zwykle będzie adres URL — Uniform Resource Locator.
Rozdzielenie aplikacji klient-serwer (ang. client-server)
Zarówno serwer, jak i klient działają niezależnie od siebie. W ten sposób zapewnia się skalowalność oraz możliwość przenoszenia danych między poszczególnymi platformami.
Bezstanowość (ang. Statelessness)
Bezstanowość polega na tym, że każde zapytanie klienta musi zawierać wystarczającą ilość danych oraz informacji, aby dało się je obsłużyć bez dostępu do jakichkolwiek wcześniejszych zasobów lub sesji. Otrzymując żądanie, serwer na podstawie specjalnego tokenu ocenia, czy klient ma uprawnienia, aby takie zapytanie obsłużyć, a jeśli tak, w jakim zakresie. Za przechowywanie i obsługę danych sesyjnych odpowiada klient. Z tego względu mówi się, że w przypadku REST API po stronie serwera nie powinno występować żadne session affinity, czyli jakakolwiek zależność między działaniem usługi a wcześniejszymi akcjami użytkownika.
Cache’owanie danych (ang. cacheability)
Aby lepiej zrozumieć cache’owanie danych, wróćmy do naszego przykładu z wypłatą wynagrodzeń dla pracowników. Wyobraź sobie, że program księgowy komunikuje się z API banków, w których poszczególni pracownicy mają założone konta. Sama operacja nie jest być może bardzo skomplikowana, jednak z tym samym API łączy się kilkaset tysięcy użytkowników jednocześnie. Czy to nie obciąża zanadto serwera, który musi przetwarzać jednocześnie wszystkie żądania? Jasne, że tak!
Aby zapobiec opóźnieniom i poważniejszym wypadkom, stosuje się różnego rodzaju zabiegi mające na celu zmniejszenie obładowania serwera. Jedną z metod jest wykorzystanie przeglądarki internetowej, która zapamiętuje odpowiedzi serwera.
Kolejnym rozwiązaniem jest REDIS (ang. Remote Dictionary Service), czyli pamięciowa baza danych NoSQL przechowująca w pamięci duże ilości informacji przy minimalnym zużyciu pamięci. Jeszcze inne działanie polega na wykorzystaniu systemu buforowania pamięci Memcached wykorzystywanego do zwiększenia prędkości działania aplikacji internetowych.
System warstwowy (ang. Layered System)
Separacja warstw polega na tym, że zarówno sama komunikacja, jak i wymiana informacji klient-serwer przebiega w oderwaniu od serwisów lub usług wykorzystywanych przez serwer. Mówiąc obrazowo dany komponent nie „widzi” warstwy innej niż ta, z którą aktualnie wchodzi w interakcję. Dla developerów jest to o tyle wygodne rozwiązanie, że mogą oni projektować software złożony z wielu warstw, np. logiki, zabezpieczeń, aplikacji czy interfejsu. Wszystkie te warstwy współdziałają ze sobą, ale są niewidoczne dla klienta.
Wysyłanie kodu do aplikacji klienta na żądanie (ang. Code on Demand)
Choć całkowicie opcjonalne, przesyłanie kodu bywa przydatne. Pozwala klientowi na pobieranie i wykonywanie kodu źródłowego pod postacią skryptów lub apletów, czyli niewielkich programów gotowych np. do osadzenia na stronie internetowej. Dzięki Code on Demand korzystanie z usługi staje się prostsze i szybsze, ponieważ serwer może przesyłać mniej informacji. Prostym przykładem tej technologii są formularze internetowe, które automatycznie podświetlają brakujące informacje. Jest to możliwe właśnie dzięki przesłaniu kodu źródłowego z serwera.
Jakie informacje zawiera żądanie klienta i odpowiedź serwera?
Struktura zapytania ze strony klienta oraz odpowiedzi udzielonej przez serwer jest sformalizowana. Spróbujmy przyjrzeć się jej z bliska. Kiedy korzystasz z API serwera, wysyłasz do niego żądanie wykonania określonego działania. Zawiera ono takie informacje, jak:
- Unique Resource Identifier (URI) — to ścieżka prowadząca bezpośrednio do zasobu, którego żąda klient;
- metody — protokół HTTP może zawierać różnego rodzaju wytyczne dla serwera, które służą filtrowaniu informacji, zmianie stanu serwera oraz do innych celów. Są to – np. GET, POST, PUT, DELETE);
- nagłówki HTTP — metadane specyfikujące np. format żądania i odpowiedzi;
- dane — zapytanie może zawierać konkretne dane dla metod, aby te mogły zadziałać prawidłowo;
- parametry — dodatkowe wytyczne dla serwera precyzujące treść żądania. Do przykładowych parametrów można zaliczyć szczegóły ścieżki URL czy informacje dotyczące ciasteczek, które przyspieszają autoryzację klienta.

Odpowiedź udzielana przez serwer również ma określoną budowę. Muszą w niej znaleźć następujące elementy:
- Stan serwera — trzycyfrowy kod komunikujący informację o powodzeniu lub niepowodzeniu komunikacji. Kodów serwera jest wiele, ale można podzielić je na kilka grup. Zaczynające się od cyfry 2 (2XX) oznaczają sukces, od cyfry 4 i 5 (4XX, 5XX) – niepowodzenie, zaś od cyfry 3 (3XX) – przekierowanie adresu URL;
- treść wiadomość — jak sama nazwa wskazuje, zawiera odpowiedź na żądanie klienta. Dane mogą zostać zwrócone w formacie XML lub JSON;
- nagłówki — nagłówki zawierają dodatkowe informacje o każdej odpowiedzi. Może to być np. rodzaj treści czy data kodowania.
Dlaczego warto korzystać z REST API?
Wiesz już jak jest zbudowany styl architektury REST API, ale dlaczego miałbyś z niego korzystać? Istnieje kilka sposobów, w jakich REST API może poprawić wydajność w Twojej firmie.
Skalowalność
System wykorzystujący REST API można wygodnie skalować, ponieważ interfejs optymalizuje przepływ informacji między klientem a serwerem. Bezstanowość odciąża serwer, bo nie musi on przechowywać archiwalnych danych dotyczących klienta. Mądrze zaprojektowany caching pozwala nawet całkowicie wyeliminować potrzebę interakcji klient-serwer, więc dostęp do usług lub danych przebiega błyskawicznie.
Elastyczność
Usługi sieciowe bazujące na RESTful API promują pełną niezależność na linii klient-serwer. Upraszczają i rozłączają poszczególne usługi, a każdy użytkownik może korzystać z nich całkowicie niezależnie od innych osób. Co więcej, modyfikacja platformy lub technologii nie powoduje zmian w aplikacji po stronie serwera ani po stronie klienta. Kolejną zaletą REST API jest możliwość nawarstwiania kolejnych funkcji aplikacji. Dlatego developerzy mogą np. modyfikować bazę danych bez konieczności jednoczesnego modyfikowania warstwy logicznej software’u.
Niezależność
Aby uzyskać dostęp do aplikacji poprzez API, nie musisz zapewniać kompatybilności języka programowania po stronie serwera i klienta. Będą one współdziałały ze sobą niezależnie od technologii, na jakiej są oparte. Możesz nawet zmienić ją w trakcie!
Usprawnij pracę firmy
Darujemy sobie wyjaśnianie takich terminów, jak idempotentność czy model dojrzałości Richardsona. Warto jednak zapamiętać, że REST API pozwala na korzystanie z lekkiej architektury, która pozwala na dodawanie nowych zasobów i modyfikację tych już istniejących bez wpływu na architekturę systemu. Innymi słowy, aplikacja działa szybko, jest elastyczna i może być napisana w wielu różnych językach programowania.
Czy korzystanie z REST API jest bezpieczne?
Wymieniając informacje niezbędne do działania firmowych aplikacji z wykorzystaniem REST API możesz mieć wątpliwości co do bezpieczeństwa takiego połączenia i będą one całkowicie uzasadnione. W końcu wiele informacji udostępnianych w sieci ma kluczowe znaczenie dla Twojej firmy, nie wspominając nawet o dotkliwych sankcjach prawnych za ujawnienie danych osobowych pracowników czy naruszenie przepisów ustawy o zwalczaniu nieuczciwej konkurencji poprzez ujawnienie informacji stanowiących tajemnicę przedsiębiorstwa. O czym pamiętać przy implementacji RESTful API?
Podstawową strategią jest wdrożenie protokołu TLS (ang. Transport Layer Security). Zapewnia on szyfrowanie wszystkich informacji wymienianych między klientem a serwerem, co minimalizuje ryzyko nieautoryzowanego dostępu do informacji. Dobrym sposobem jest zapewnienie mTLS (ang. mutual Transport Layer Security), w którym obie strony korzystają z szyfrowania.
Kolejnym zabezpieczeniem jest skorzystanie w ramach API z usług zewnętrznego podmiotu weryfikującego tożsamość, tzw IDP (ang. Identity Provider). Zwykle polega to na zażądaniu klucza API lub tokena uwierzytelniającego, np. JSON Web Token. Metoda jest uważana za znacznie bardziej bezpieczną niż klasyczne podawanie loginu i hasła, które jest obarczone ryzykiem.
Wreszcie warto pamiętać o zasadzie ograniczonego zaufania. Interfejs REST API nigdy nie powinien bezkrytycznie ufać informacjom otrzymywanym z zewnątrz. Właśnie dlatego wszystkie przychodzące dane powinny być walidowane pod kątem zgodności i popularnych ataków hakerskich, jak SQL Infection czy Cross-Site Scripting. Najlepsze praktyki bezpieczeństwa REST API obejmują takie działania, jak:
- regularne audyty bezpieczeństwa i testy penetracyjne;
- wdrożenie silnych metod weryfikacyjnych, jak OpenID Connect czy uwierzytelnianie dwuskładnikowe;
- szyfrowanie danych w ruchu oraz biernych (za pomocą protokołów TLS lub AES);
- stosowanie limitów szybkości i przydziału, aby zapobiec utracie kontroli nad liczbą zapytań do API;
- wprowadzenie automatycznego skanowania API pod kątem zagrożeń;
- realizacja polityki Zero-Trust w organizacji;
- ochrona infrastruktury hostującej REST API.
Podczas tworzenia oprogramowania API w EasyAutomate zawsze na pierwszym miejscu stawiamy bezpieczeństwo klienta. Zawsze zaczynamy pracę od identyfikacji potencjalnych zagrożeń, dopiero później dopracowujemy szczegóły konkretnej technologii. Dzięki temu nasi klienci otrzymują aplikacje korzystające z API, które są możliwie bezpieczne.

Złóżmy to wszystko w całość, czyli jak właściwie działa REST API?
Przedstawiliśmy podstawy funkcjonowania interfejsu REST API. Teraz spróbujmy zrobić coś z tą wiedzą. Jak w praktyce wygląda korzystanie z tej technologii?
- Krok pierwszy — klient wysyła żądanie do serwera. Niezbędne jest bazowanie na dokumentacji API, aby serwer otrzymał zapytanie, które może zrozumieć i obsłużyć.
- Krok drugi — serwer weryfikuje uprawnienia klienta i upewnia się, że może on wystąpić z żądaniem.
- Krok trzeci — serwer otrzymuje żądanie i przetwarza ją wewnętrznie.
- Krok czwarty — serwer zwraca odpowiedź na żądanie klienta. Taka odpowiedź zawiera zarówno informację o tym, czy komunikacja przebiegła pomyślnie, jak i dane objęte zapytaniem.
Jak możemy Ci pomóc z REST API?
W EasyAutomate zajmujemy się tworzeniem profesjonalnych aplikacji REST API posiadających dokładnie takie funkcje i procedury, jakich potrzebujesz w bieżącej działalności. Zapewnij sobie sprawną wymianę informacji między systemami, jednolity interfejs, skalowalność i szybkość działania. Każde działanie projektowe poprzedzamy analizą biznesową, która ma na celu ocenę opłacalności inwestycji i jej wpływu na efektywność Twojej firmy. Rekomendujemy tylko takie rozwiązania, które sprawią, że Twoja firma zacznie lepiej prosperować.

