REST API to aplikacyjny interfejs programistyczny, który tworzy zestaw reguł łączenia i komunikacji poszczególnych aplikacji i urządzeń. Nazwa pochodzi od dwóch skrótowców:
REST, czyli Representational State Transfer, który jest stylem architektury systemu z określonym zbiorem reguł definiowania i dostępu do zasobów. Definiuje jak ma wyglądać API.
API, czyli Application Programming Interface, który definiuje zbiór reguł komunikacji między systemami komputerowymi, a także pomiędzy systemem komputerowym a użytkownikiem.
REST API – reguły projektowania
- Niezależność aplikacji klient-serwer
Konieczne do zachowania spójności danych jest rozdzielenie klient-serwer. Klient komunikuje się z serwerem, aby uzyskać dostęp do usługi. Serwer odpowiada danymi, ale nie ingeruje w UI. Dzięki temu wykorzystuje się jedno REST API w kilku niezależnych aplikacjach.
2. Jednolity interfejs
Niezależnie od platformy, z której użytkownik komunikuje się z serwerem, format komunikacji zawsze będzie ten sam.
3.Buforowalność
Jeśli jakiś zasób może być wykorzystywany często, serwer musi być w stanie te dane zbuforować. W przypadku ponownego otrzymania tego samego zapytania dane mogą być wysłane od razu z bufora zamiast zbierania ich na nowo.
Prostota REST API pozwala projektantom sieci projektować rozwiązania optymalne dla ich systemów. Z perspektywy użytkownika nieważne jest, z jakim typem urządzenia się komunikuje. Otrzymane informacje będą takie same w przypadku serwera lub innego pośrednika, np. load balancera.
4. Bezstanowość
W interfejsie REST klient musi dostarczyć komplet wymaganych informacji od razu w momencie zapytania. Serwer może od razu na to zapytanie odpowiedzieć, a po odpowiedzi nie przechowuje informacji o zapytaniu.
5. Warstwowość
Warstwowość REST API polega na ścisłym rozdzieleniu funkcjonalności. Logika biznesowa, warstwy uwierzytelniające i inne elementy programu muszą być od siebie niezależne. Klient jednej warstwy nie musi wiedzieć o istnieniu kolejnej warstwy.
6. Kod na żądanie
To ostatni, opcjonalny warunek. Klient może otrzymać nie tylko dane, ale także odpowiedź w formie kodu, który może wykorzystać w swojej aplikacji, np. będą to fragmenty JavaScriptu.