encyklopedia.space

REST API

REST API (ang. Representational State Transfer Application Programming Interface) to interfejs programistyczny aplikacji oparty na zasadach architektury REST. Umożliwia komunikację między systemami za pośrednictwem protokołu HTTP, wykorzystując standardowe metody tego protokołu oraz formaty wymiany danych, takie jak JSON i XML.

Historia i kontekst

Koncept REST został sformułowany w 2000 roku przez Roye Fieldinga w jego rozprawie doktorskiej. Idea ta wyrosła z potrzeby uproszczenia usług sieciowych i odróżnienia ich od bardziej złożonych rozwiązań opartych na architekturze zorientowanej na usługi (SOA). Pierwsze publiczne REST API pojawiły się w połowie pierwszej dekady XXI wieku, m.in. w serwisach takich jak Twitter czy Flickr.

Podstawowe zasady REST

  • Jednolitość interfejsu – wszystkie zasoby są identyfikowane przy pomocy URI i manipulowane przy użyciu standardowych metod HTTP (GET, POST, PUT, DELETE, PATCH).
  • Bezustatność – każde żądanie od klienta musi zawierać pełną informację niezbędną do jego obsługi; serwer nie utrzymuje stanu sesji po stronie.
  • Cache’owalność – odpowiedzi mogą być buforowane, co zwiększa wydajność i zmniejsza obciążenie sieci.
  • Warstwa systemowa – architektura może być podzielona na warstwy, z których każda jest odseparowana od pozostałych.
  • Hipermedia jako silnik aplikacji (HATEOAS) – odpowiedzi zawierają odnośniki (hypermedia links) umożliwiające dynamiczne odkrywanie dostępnych działań.

Budowa i elementy REST API

Typowy REST API składa się z następujących elementów:

  1. Zasoby – abstrakcyjne byty reprezentowane w systemie (np. użytkownicy, produkty). Każdy zasób ma unikalny identyfikator URI, np. /users/123.
  2. Metody HTTP – określają operacje na zasobach:
    • GET – pobranie reprezentacji zasobu.
    • POST – utworzenie nowego zasobu.
    • PUT – pełna aktualizacja istniejącego zasobu.
    • PATCH – częściowa aktualizacja.
    • DELETE – usunięcie zasobu.
  3. Formaty reprezentacji – najczęściej używane to JSON oraz XML. Wybór formatu zależy od potrzeb aplikacji oraz wymagań interoperacyjnych.
  4. Kody statusu HTTP – informują o wyniku operacji (np. 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error).
  5. Autoryzacja i uwierzytelnianie – popularne mechanizmy to OAuth, JSON Web Token (JWT) oraz podstawowe uwierzytelnianie (Basic Auth).

Zalety REST API

  • Prostota i czytelność – opiera się na powszechnie znanym protokole HTTP.
  • Skalowalność – dzięki bezstanowości i możliwości buforowania.
  • Łatwa integracja – wiele języków programowania oferuje biblioteki do obsługi JSON i XML.
  • Elastyczność – możliwość rozwijania interfejsu bez zmiany istniejących klientów (zgodność wsteczna).

Ograniczenia i wyzwania

  • Brak standaryzacji hipermedialnych linków – implementacje HATEOAS mogą się różnić.
  • Ograniczona kontrola transakcji – brak natywnego wsparcia dla operacji atomowych (w przeciwieństwie do np. SOAP).
  • Konieczność dbałości o bezpieczeństwo – otwarte endpointy API są potencjalnym wektorem ataków.

Przykładowe zastosowania

REST API jest wykorzystywane w:

  • aplikacjach mobilnych – umożliwia pobieranie danych z serwera w czasie rzeczywistym,
  • systemach integracji biznesowej – łączenie systemów ERP z portalami e‑commerce,
  • platformach chmurowych – oferowanie usług jako SaaS,
  • aplikacjach IoT – wymiana danych pomiędzy urządzeniami a serwerem centralnym.

Porównanie z innymi stylami architektonicznymi

Cecha REST SOAP GraphQL
Protokół transportowy HTTP HTTP, SMTP, JMS HTTP
Format wiadomości JSON, XML, inne XML (SOAP envelope) JSON
Stanowość Bezustatny Możliwy stan (wsparcie sesji) Bezustatny
Obsługa hipermediów Tak (HATEOAS) Nie (wszystko w ciele SOAP) Nie bezpośrednio

Standardy i specyfikacje powiązane

Przykład prostego zapytania

GET /api/v1/users/42 HTTP/1.1
Host: api.przyklad.com
Accept: application/json
    

Odpowiedź serwera:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 42,
    "name": "Jan Kowalski",
    "email": "jan.kowalski@example.com",
    "_links": {
        "self": { "href": "/api/v1/users/42" },
        "orders": { "href": "/api/v1/users/42/orders" }
    }
}
    

Przyszłość REST API

Mimo rosnącej popularności alternatywnych podejść, takich jak GraphQL czy gRPC, REST pozostaje dominującym stylem wymiany danych w Internecie. Rozwój standardów takich jak OpenAPI oraz technik zabezpieczania (np. OAuth 2.0) zapewnia, że architektura ta będzie wspierać nowoczesne aplikacje przez kolejne lata.