6. RESTful API

RESTful API (ang. Representational State Transfer Application Programming Interface) to rodzaj interfejsu programowania aplikacji (API), który opiera się na zasadach architektury REST (Representational State Transfer). REST to styl architektoniczny który definiuje zbiór zasad umożliwiających tworzenie skalowalnych i łatwych w utrzymaniu systemów komunikacji sieciowej. RESTful API to zatem interfejs, który pozwala na komunikację między klientem a serwerem w sposób zgodny z zasadami REST. Zasady te zostały zdefiniowane w kontekście protokołu HTTP i to  z nim są najczęściej wykorzystywane. Ich zastosowanie porządkuje i ujednolica sposób wykorzystania różnych elementów protokołu HTTP do realizacji typu CRUD (ang. Create, Read, Update, Delete).

REST został zaproponowany w roku 2000 przez Roya Fieldinga w jego rozprawie doktorskiej.
Roy Fielding to współautor specyfikacji protokołu HTTP/1.0, współfundator projektu Apache HTTP Server.

Choć założenia stylu REST są wciąż aktualne i stosowane w praktyce, na przestrzeni minionych lat podjęte zostały prace standaryzujące, rezultatem których są m.in. dostępne narzędzia służące do projektowania API. Docelowo warto swoje zainteresowania skierować na OpenAPI Specification (OAS). Przyjrzymy się jednak założeniom przyświecającym stylowi REST, gdyż są one zastosowane również w OAS.
Jak działa RESTful API?
Jako że API w stylu REST bazuje na protokole HTTP, generalnie rzecz biorąc sposób organizacji komunikacji w żądania wysyłane przez klienta do serwera jest taki sam jak dla protokołu HTTP.
  • Klient wysyła żądanie HTTP:
    • Klient, np. przeglądarka lub aplikacja mobilna, wysyła żądanie do serwera, podając URL zasobu oraz wykorzystując odpowiednią metodę HTTP (GET, POST, PUT, DELETE itp.).
  • Serwer przetwarza żądanie:
    • Serwer interpretuje żądanie, wykonuje odpowiednią operację na zasobie (np. pobiera dane z bazy danych) i przygotowuje odpowiedź.
  • Serwer zwraca odpowiedź:
    • Odpowiedź zawiera reprezentację zasobu (np. w formacie JSON), a także kod statusu HTTP wskazujący, czy operacja się powiodła (np. 200 OK, 404 Not Found).
Zasadnicza różnica względem "surowego HTTP" leży więc w uporządkowaniu tej komunikacji i nałożeniu reguł, które pozwalają łatwo zrozumieć sposób działania API.

W kolejnych rozdziałach omówione zostały podstawowe koncepcje definiujące styl architektoniczny REST.