API

Integracja API — standardy i wzorce dla systemów korporacyjnych

API (Application Programming Interface) to zestaw protokołów i konwencji umożliwiających komunikację między systemami oprogramowania. W architekturze korporacyjnej API są fundamentem integracji platform biznesowych.

Articles published on this website summarize publicly available information, industry research and educational materials.

REST API — zasady i ograniczenia

REST (Representational State Transfer) to styl architektoniczny opisujący zestaw ograniczeń dla systemów rozproszonych, nie protokół. API zgodne z REST (RESTful) opierają się na zasobach identyfikowanych przez URI, operacjach HTTP (GET, POST, PUT, DELETE, PATCH) i bezstanowej komunikacji client-server.

Sześć ograniczeń REST

  • Client-server separation (oddzielenie klienta od serwera)
  • Statelessness (bezstanowość — każde żądanie jest kompletne)
  • Cacheability (możliwość buforowania odpowiedzi)
  • Uniform interface (ujednolicony interfejs — zasoby, reprezentacje, samoopis, HATEOAS)
  • Layered system (warstwowa architektura)
  • Code on demand (opcjonalne przesyłanie kodu)

GraphQL

GraphQL to język zapytań dla API i środowisko uruchomieniowe opracowane przez Facebook (Meta) w 2012 roku, udostępnione publicznie w 2015. W przeciwieństwie do REST, gdzie każdy endpoint zwraca stałą strukturę danych, GraphQL pozwala klientowi precyzyjnie określić, jakie dane potrzebuje — eliminując over-fetching (pobieranie nadmiaru danych) i under-fetching (konieczność wielu żądań).

GraphQL jest szczególnie korzystny przy złożonych frontendach (mobile, SPA) z różnorodnymi wymaganiami dotyczącymi danych i przy szybko ewoluujących API — zmiany w modelu danych nie wymagają tworzenia nowych endpointów.

SOAP i usługi sieciowe

SOAP (Simple Object Access Protocol) to protokół wymiany wiadomości XML przez HTTP lub inne protokoły transportowe. Był dominującym standardem integracji systemów korporacyjnych w latach 2000–2010. Charakteryzuje się ścisłą specyfikacją (WSDL — Web Services Description Language), obsługą transakcji ACID, zaawansowanymi mechanizmami bezpieczeństwa (WS-Security) i niezależnością od protokołu transportowego.

SOAP pozostaje w użyciu w wielu systemach legacy i branżach o wysokich wymaganiach bezpieczeństwa i zgodności (bankowość, ubezpieczenia, administracja publiczna). Nowe systemy zazwyczaj preferują REST lub GraphQL ze względu na prostotę i mniejszy narzut.

API Gateway

API Gateway to komponent infrastrukturowy pośredniczący między klientami a serwisami backendowymi. Realizuje funkcje: routingu żądań, autentykacji i autoryzacji (OAuth 2.0, API keys), rate limiting, transformacji żądań i odpowiedzi, logowania i monitoringu oraz cachowania odpowiedzi.

W architekturze mikroserwisowej API Gateway jest punktem wejścia do wszystkich serwisów — eliminuje konieczność implementacji tych funkcji w każdym serwisie osobno. Popularne rozwiązania to zarówno produkty open-source (Kong, Traefik, NGINX) jak i usługi zarządzane dostawców chmury (AWS API Gateway, Azure API Management, Google Cloud Endpoints).

Bezpieczeństwo API

OWASP API Security Top 10 dokumentuje najczęstsze luki bezpieczeństwa API korporacyjnych. Kluczowe zagrożenia to: Broken Object Level Authorization (BOLA/IDOR — dostęp do zasobów innych użytkowników), Broken Authentication, Excessive Data Exposure (zwracanie nadmiarowych danych), Lack of Resources & Rate Limiting i Security Misconfiguration.

Podstawowe dobre praktyki: autentykacja OAuth 2.0 / JWT, HTTPS/TLS dla całej komunikacji, walidacja i sanityzacja danych wejściowych, rate limiting i throttling, logowanie i monitoring anomalii, regularne testy penetracyjne API.

Często zadawane pytania

REST czy GraphQL — kiedy wybrać które podejście?
REST jest odpowiedni gdy: API ma prostą, stabilną strukturę zasobów, klienci mają podobne wymagania dotyczące danych, caching jest ważnym wymaganiem (REST cache'uje lepiej niż GraphQL) i zespół zna REST lepiej niż GraphQL. GraphQL jest korzystniejszy gdy: klienci mają bardzo różne wymagania dotyczące danych (np. mobilny vs. desktopowy), API obsługuje złożone grafy relacji między obiektami i duże znaczenie ma minimalizacja transferu danych (np. aplikacje mobilne na słabych łączach).
Czym jest OpenAPI Specification?
OpenAPI Specification (dawniej Swagger) to standard opisu REST API w formacie YAML lub JSON. Pozwala na maszynową i ludzką czytelność definicji API: endpointów, parametrów, typów danych, schematów uwierzytelniania i odpowiedzi. OpenAPI jest podstawą ekosystemu narzędzi do generowania klientów API, testowania, mockowania i tworzenia dokumentacji. Aktualnie obowiązuje wersja 3.1, zarządzana przez OpenAPI Initiative.