Interfejsy API REST

menu icon

Interfejsy API REST

Interfejsy API REST zapewniają elastyczny, uproszczony sposób integracji aplikacji. Są one najpowszechniej stosowaną metodą łączenia komponentów w architekturach mikrousług.

Czym jest interfejs API REST?

Interfejs API, czyli aplikacyjny interfejs programistyczny, jest zestawem reguł definiujących sposób, w jaki aplikacje lub urządzenia mogą się ze sobą łączyć i komunikować. Interfejs API REST to interfejs API zgodny z zasadami projektowania REST, czyli stylem architektury representational state transfer. Z tego powodu interfejsy API REST są czasami nazywane interfejsami API zgodnymi ze specyfikacją REST.

Specyfikacja REST — po raz pierwszy zdefiniowana w 2000 roku przez informatyka dr. Roya Fieldinga w jego pracy doktorskiej — zapewnia programistom stosunkowo wysoką elastyczność i swobodę. Ta elastyczność to tylko jeden z powodów, dla których interfejsy API REST stały się najpowszechniej stosowaną metodą łączenia komponentów i aplikacji w architekturach mikrousług.

Zasady projektowania REST

Podstawowe działanie interfejsu API polega na umożliwieniu aplikacji lub usłudze uzyskania dostępu do zasobu w innej aplikacji lub usłudze. Aplikacja lub usługa uzyskująca dostęp jest nazywana klientem, a aplikacja lub usługa, w której znajduje się zasób — serwerem.

Niektóre interfejsy API, takie jak SOAP lub XML-RPC, narzucają programistom ścisłą strukturę. Natomiast interfejsy API REST mogą być opracowywane przy użyciu niemal dowolnego języka programowania i obsługują wiele różnych formatów danych. Jedynym wymaganiem, które należy spełnić, jest stosowanie się do następujących sześciu zasad projektowania REST (znanych też jako ograniczenia architektoniczne):

  1. Jednolity interfejs. Wszystkie żądania wysyłane do interfejsu API dotyczące tego samego zasobu powinny wyglądać tak samo, bez względu na to, skąd pochodzą. Interfejs API REST powinien zapewniać przypisanie jednego elementu danych, takiego jak nazwa lub adres e-mail użytkownika, do jednego identyfikatora URI. Zasoby nie powinny być zbyt duże, ale powinny zawierać wszystkie informacje, których może potrzebować klient.
  2. Rozdzielenie klienta i serwera. Podczas projektowania interfejsu API REST aplikacje klienta i serwera muszą być całkowicie niezależne od siebie. Aplikacja kliencka powinna dysponować wyłącznie informacją o identyfikatorze URI żądanego zasobu. Nie może ona wchodzić w interakcje z aplikacją serwera w żaden inny sposób. Podobnie aplikacja serwera nie powinna modyfikować aplikacji klienckiej, a jedynie przekazywać jej żądane dane za pośrednictwem protokołu HTTP.
  3. Bezstanowość. Interfejsy API REST są bezstanowe. To oznacza, że każde żądanie musi zawierać wszystkie informacje niezbędne do jego przetworzenia. Innymi słowy, interfejsy API REST nie wymagają żadnych sesji po stronie serwera. Aplikacje serwera nie mogą przechowywać żadnych danych związanych z żądaniem klienta.
  4. Możliwość buforowania. Gdy to możliwe, powinna być dostępna opcja buforowania zasobów po stronie klienta lub serwera. Odpowiedzi serwera muszą również zawierać informację o tym, czy buforowanie dostarczonego zasobu jest dozwolone. Celem jest zwiększenie wydajności po stronie klienta przy jednoczesnym zwiększeniu skalowalności po stronie serwera.
  5. Warstwowa architektura systemu. W interfejsach API REST wywołania i odpowiedzi przechodzą przez różne warstwy. Z reguły nie należy zakładać, że aplikacje klienta i serwera łączą się ze sobą bezpośrednio. Pętla komunikacyjna może obejmować pewną liczbę elementów pośredniczących. Interfejsy API REST muszą być zaprojektowane w taki sposób, aby ani klient, ani serwer nie miał informacji o tym, czy komunikuje się z aplikacją końcową, czy elementem pośredniczącym.
  6. Kod na żądanie (opcjonalnie). Interfejsy API REST zwykle wysyłają zasoby statyczne, ale w niektórych przypadkach odpowiedzi mogą również zawierać kod wykonywalny (np. aplety Java). W takich przypadkach kod powinien być uruchamiany tylko na żądanie.

Sposób działania interfejsów API REST

Interfejsy API REST komunikują się za pośrednictwem żądań HTTP w celu wykonywania standardowych funkcji bazy danych, takich jak tworzenie, odczytywanie, aktualizowanie i usuwanie rekordów w zasobie (te operacje są znane też jako CRUD — create, read, update, delete). Na przykład interfejs API REST może użyć żądania GET do pobrania rekordu, żądania POST do utworzenia rekordu, żądania PUT do zaktualizowania rekordu i żądania DELETE do usunięcia rekordu. Wszystkie metody HTTP mogą być używane w wywołaniach API. Dobrze zaprojektowany interfejs API REST jest podobny do serwisu WWW działającego w przeglądarce WWW z wbudowaną funkcjonalnością HTTP.

Stan zasobu w dowolnym określonym momencie (wskazywanym przez znacznik czasu), jest nazywany reprezentacją zasobu. Te informacje mogą być dostarczane klientowi w niemal dowolnym formacie, w tym JSON (JavaScript Object Notation), HTML, XLT, Python lub PHP albo jako jawny tekst. Format JSON jest popularny, ponieważ jest czytelny zarówno dla ludzi, jak i maszyn, a ponadto jest niezależny od języka programowania.

Parametry i nagłówki żądań także są ważne w przypadku wywołań API REST, ponieważ zawierają ważne informacje identyfikujące, takie jak metadane, autoryzacje, identyfikatory URI, dane o buforowaniu, pliki cookie itp. W dobrze zaprojektowanych interfejsach API REST są używane nagłówki żądań i nagłówki odpowiedzi, a także konwencjonalne kody statusu HTTP.

Interfejs REST API — sprawdzone procedury

Elastyczność jest dużą zaletą projektu interfejsu API REST, ale ta cecha sprawia też, że łatwo można zaprojektować interfejs API, który nie działa lub ma niską wydajność. Z tego powodu profesjonalni programiści stosują sprawdzone procedury w specyfikacjach interfejsów API REST.

Specyfikacja OAS (OpenAPI Specification) ustanawia interfejs służący do opisywania interfejsu API w taki sposób, aby umożliwić każdemu programiście i każdej aplikacji poznanie oraz pełne zrozumienie jego parametrów i możliwości — dostępnych punktów końcowych, dozwolonych operacji na każdym punkcie końcowym, parametrów operacji, metod uwierzytelniania i innych informacji. Najnowsza wersja, OAS3 (odsyłacz prowadzi poza serwis IBM), obejmuje praktyczne narzędzia, takie jak OpenAPI Generator, służące do generowania kodu pośredniczącego serwera i klientów interfejsów API w różnych językach programowania.

Zabezpieczanie interfejsu API REST również rozpoczyna się od stosowania sprawdzonych procedur branżowych, np. używania algorytmów kodowania mieszającego w celu zabezpieczenia haseł i protokołu HTTPS na potrzeby bezpiecznej transmisji danych. Środowisko autoryzacji, takie jak OAuth 2.0 (odsyłacz prowadzi poza serwis IBM), może pomóc w ograniczeniu uprawnień aplikacji innych firm. Korzystając ze znacznika czasu w nagłówku HTTP, interfejs API może także odrzucić każde żądanie, które nadejdzie po określonym czasie. Sprawdzanie poprawności parametrów i tokeny JSON Web Tokens to dwa inne sposoby na umożliwienie dostępu do interfejsu API tylko autoryzowanym klientom.

Interfejsy API REST i IBM Cloud

Z powodu zapewnianych korzyści interfejsy API REST będą w przyszłości nadal stanowić integralną część procesu tworzenia oprogramowania, zwłaszcza biorąc pod uwagę wpływ wzrostu zapotrzebowania na udoskonalone doświadczenia klientów i większej liczby aplikacji na działalność biznesową i operacje IT.

W spełnieniu tych wymagań pomoże większa automatyzacja. Idealnie byłoby zacząć od małych, udanych projektów, które następnie można skalować i optymalizować pod kątem innych procesów i w innych częściach organizacji. Współpracując z IBM, uzyskasz dostęp do funkcji automatyzacji opartych na sztucznej inteligencji, w tym do gotowych przepływów pracy, które pomogą przyspieszyć innowacje, czyniąc każdy proces bardziej inteligentnym.

Narzędzia i usługi IBM mogą pomóc w rozwiązaniu istotnych problemów związanych z interfejsami API, w tym bezpieczeństwem, nadzorem i automatyzacją, w miarę modernizowania aplikacji.

Wykonaj kolejny krok:

  • Zapoznaj się z produktem IBM Cloud Pak for Integration, który został oparty na podstawowych możliwościach IBM API Connect, aby umożliwić architektom i administratorom przejęcie pełnej kontroli nad cyklem życia interfejsu API.
  • Odwiedź serwis IBM Cloud API Docs zawierający dokumentację interfejsów API obsługiwanych na platformie IBM Cloud.
  • Przeprowadź ocenę dojrzałości integracji, aby ocenić poziom dojrzałości integracji w newralgicznych obszarach i poznać działania, które można podjąć w celu jego podniesienia.
  • Pobierz nasz przewodnik po zwinnej integracji, który bada zalety opartego na kontenerach, zdecentralizowanego i zorientowanego na mikrousługi podejścia do integracji rozwiązań.

Załóż konto IBM Cloud już dzisiaj.