Skip to content

Witaj w Świecie Jutra!

  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
  • Home
  • Wszystko
  • Czym jest REST (i SOAP)?
  • Programowanie
  • Wszystko

Czym jest REST (i SOAP)?

Jakub Raczkowski 16 kwietnia 2024

Powoli zaczynamy wychodzić poza ramy localhosta i zaglądać do czeluści Internetu. W tym odcinku serii „Czym jest…?” wyjaśnimy czym dokładnie jest i jakie ma zastosowanie REST API.

Uwaga! W tej serii zajmuję się opisowym przedstawieniem tematu, a celem jest zapoznanie z zagadnieniem w sposób luźny i zrozumiały dla nowicjusza. W związku z tym wiele elementów siłą rzeczy musi zostać pominiętych. Tych z was, którzy chcieliby się dowiedzieć więcej, zapraszam do źródeł na końcu artykułu.

Czy zastanawialiście się kiedyś jak działa Internet?
.
.
.
Hmm, chociaż to może zbyt duże uogólnienie, zatem pozwólcie mi doprecyzować:

Co tam się dzieje „w środku” kiedy wpiszemy adres www i wciśniemy Enter?

…i Enter!

Cóż, trochę tego jest. Wpierw przeglądarka musi dostać konkretny adres IP więc wysyła zapytanie do serwera DNS. Kiedy już dostanie ukochane cyferki, nadaje tam wiadomość z prośbą o przesłanie dostępnej zawartości: kodu html, obrazka czy innego pliku. Następnie docelowy serwer obsługuje to żądanie i jeśli wszystko zadziała, to wysyła wiadomość zwrotną z pożądanym contentem, która zostaje obsłużona przez naszą przeglądarkę. Jeśli ta dostanie plik .html to wyrenderuje nam stronę www, ostyluje za pomocą dołączonego CSS-a i opcjonalnie odpali skrypty JavaScript.

GOTOWE!

Dobrze, skoro mamy ogarnięte jak to wygląda od strony użytkownika, to teraz skupmy się na drugim końcu kija – serwerze. A raczej serwerach, bo zazwyczaj mamy do czynienia z dwoma: frontendowym i backendowym.

Front ubiera pożądaną zawartość w ładne ciuszki i sprawia, że miło wygląda dla oka i aż chce się klikać. Natomiast nawet najpiękniejsza strona nie zatrzyma nas na dłużej, jeśli będzie pozbawiona treści. A ta jest przygotowywana właśnie przez backend.

Podsumowując*: użytkownik wysyła zapytanie do frontu, następnie front do backendu, potem front „ozdabia” tę surową odpowiedź i wysyła z powrotem do klienta strony.

(*) i zakładając, że mówimy o dynamicznie zmieniającym się contencie a nie jakimś statycznym pliku, który może zostać obsłużony bezpośrednio przez front

Ok, jasne. Tylko gdzie tu ten REST?

Zanim przejdziemy do sedna wpisu, chciałbym mieć pewność, że na pewno wiesz czym jest 'Interfejs’.

Interfejs w Javie

Przytoczony przykład z IntelliJ to tylko wizualizacja interfejsu w Javie, która pokazuje jak go napisać, ale nie tłumaczy po co.

We wpisie SOLIDne programowanie mówiłem, że OOP opiera się na abstrakcji, że lepiej typować po interfejsie niż ograniczać się do konkretnej klasy/implementacji. Ale tak właściwie dlaczego?

Interfejs == Standard

Dodając do własnego projektu jakiś interfejs określamy zasady na jakich będzie ów projekt (albo jego część) pracować. Jeśli robimy prosty edytor tekstu to może on mieć interfejs z dwiema metodami:

boolean save();
void open();

Same w sobie nic nie robią, ot dają wskazówkę jaka będzie ich funkcja. To od programisty zależy jak te metody zostaną zaimplementowane. Jeden będzie zapisywał do pliku txt, inny do pdf-a, trzeci od razu wyśle to do bazy danych. Każdy robi po swojemu, ale jednocześnie każdy trzyma się ustalonych zasad.

Taki właśnie jest REST.
To pewien rodzaj standardu dostępu do danych.

REST (skrót od „Representational State Transfer„) to API czyli „Application Programming Interface” – interfejs dający programistom dostęp do naszej aplikacji. Dzięki metodom jakie sami zadeklarujemy, inni developerzy zyskają możliwość korzystania z naszego softu.

REST jako standard ma konkretne metody HTTP, z których możemy skorzystać (ze wszystkich albo z wybranych):

  • GET (ang. „brać”)
  • POST (ang. „wysyłać”)
  • PUT (ang. „wkładać”)
  • PATCH (ang. „łatać”)
  • DELETE (ang. „usuwać”)

Ich nazwy mówią same za siebie, choć nic nie stoi na przeszkodzie* abyśmy zrobili tak, że to POST usuwa elementy, a DELETE je tworzy.

(*) no może poza tłumem wku%wionych użytkowników naszego API, który pochodniami i widłami wybije nam takie żarty z głowy.

Jednak REST to nie tylko nazwy metod, ale również zasady dotyczące tego jak mają działać. Mianowicie:

  1. Bezstanowość – metody nic nie zapamietują, ani użytkownika, ani tego co już zrobił (od tego są pliki cookies).
  2. „Keszowanie” – popularne użycia metod mogą być przerzucone do schowka (ang. „cache”) w celu szybszego obsłużenia.
  3. Podział na klienta i serwer, którzy sa od siebie niezależni (w przeciwnieństwie do np. protokołu P2P gdzie każdy jest jednocześnie klientem i serwerem).
  4. Warstwowość – w skrócie „klient nasz pan”: klient wysyła żądanie i nie interesuje go praca serwera tylko sam rezultat. Klient ma widzieć tylko wierzchnią warstwę aplikacji.
  5. Kod na żądanie – opcjonalnie można wysłać kawałek kodu (JavaScript), który ma zostać uruchomiony już po stronie klienta.
  6. Jednolity standard – REST-owe metody są zawsze takie same, bez względu na rodzaj klienta (desktop, mobile, konsola itp.)
Tak wygląda gotowa metoda GET stworzona przy użyciu Springa (o nim opowiemy sobie już niebawem)

W tym miejscu nie sposób nie napomknąć o bardzo użytecznym narzędziu do poznawania i testowania REST-owych metod jakim jest:

POSTMAN

Zwykle przeglądarka internetowa jest w stanie wywoływać jedynie metodę GET – wchodzimy na stronę i od razu pobieramy jej zawartość, nie możemy ot tak sobie walnąć tam PUT-a i podmienić treści na taką jaka nam pasuje.

I ok, nie-technicznym użytkownikom nie ma co komplikować życia. Ale jeśli dev albo tester będą chcieli sprawdzić dane API to taki nóż do masła nie wystarczy.

Potrzebny będzie szwajcarski scyzoryk: Postman.

Postman występuje w dwóch formach: albo jako rozszerzenie do przeglądarki, albo w tradycyjnej wersji desktopowej. Funkcji jest tam tyle, że ich opisanie wymagałoby osobnego artykułu, ale na dzisiaj skoncentrujmy się tylko na fakcie, że sami możemy wybierać metody API do użycia – przy tej samej zawartości zapytania inny efekt otrzymamy kiedy zawołamy GET-a, a inny dla DELETE-a. Bardzo wygodne i niesamowicie użyteczne.


Na koniec

Jeszcze rok temu, patrząc na wymagane technologie w ofertach pracy, myślałem, że REST jest pewnie jakimś zewnętrznym programem (jak Maven), albo zestawem bibliotek do użycia (jak JUnit) i dopiero po bliższym przyjrzeniu okazało się, że:

REST to interfejs
REST to standard
REST to architektura

A co ciekawe, REST nie jest jedynym koniem w tym wyścigu. Jako, że jego definicja została sprecyzowana dopiero w roku 2000, a Internet jest kilka dekad starszy, to oczywistym musi być, że wcześniej korzystano z czegoś innego. Tym czymś był tak zwany:

SOAP

Simple Object Access Protocol

Różnic trochę jest, ale REST wygryzł kolegę ze stołka, głównie dlatego, że działa szybciej i jest łatwiejszy do zrozumienia/opanowania/użycia. Mimo to SOAP wciąż jest gdzie-nie-gdzie wykorzystywany – jeśli zobaczycie go w ofertach pracy to zazwyczaj oznacza to, że chodzi o wewnętrzne sieci większych korporacji z sektora medycznego albo bankowego.

O ile SOAP już powoli odchodzi w zapomnienie to i sam REST też nie może czuć się bezpiecznie, gdyż już na karku czuje ciepły oddech innego zawodnika:

Żeby nie przedłużać, powiem tylko, że GraphQL wybierany jest najczęściej przez wielkie firmy z grubymi milionami użytkowników i miliardami zapytań każdego dnia (np. Facebook). W takich sytuacjach odchudzenie wiadomości choćby tylko o jeden znak przekłada się na realne oszczędności w pracy serwerów. GraphQL jest właśnie takim rozwiązaniem w którym każde wywołanie jego metod ma zwracać tylko pożądaną zawartość i ani literki więcej. Niestety przy okazji zauważalnie trudniej się go nauczyć niż REST-a.


Na dzisiaj chyba wystarczy informacji. Dziękuję za uwagę i zapraszam już za kilka dni na wpis poświęcony architekturze oprogramowania: „Czym jest DDD (i CQRS)?”.


Żródła:
Porównanie SOAP/REST/GRAPHQL YT/ANG

Tags: programming

Continue Reading

Previous: Czym jest JUnit (i Mockito)?
Next: Czym jest CQRS (i architektura heksagonalna)?

Related Stories

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025

Ze świata

  • Antyweb
  • Kwantowo
  • Dwóch po dwóch
200 GB internetu i no limit za 35 zł. Promocja kończy się za dwa dni!
Człowiek roku 2025: to oni najmocniej zmienili świat
Kontroler wart połowę PS5. Kto powinien go kupić?
Witajcie w przyszłości. Pierwsze takie miejsce w kosmosie już za 2 lata
Słuchawki przyjazne uszom nawet przez cały dzień. Huawei odświeża wyjątkowy produkt
Moderacja na YouTube to dno i wodorosty. Oto kolejny na to dowód
Ryzykowny ruch Elona Muska. SpaceX o krok bliżej podróży na Marsa… lub nie
Chcesz zedytować plik PDF za darmo? Nie uwierzysz, że ta strona Ci pomoże
Porzucę każdy smartfon dla tego modelu. Czekałem 15 lat
Ta funkcja będzie ratować życie. Android z bardzo ważną zmianą
Startuje nowa rządowa usługa. Każdy powinien z niej korzystać
„Głodny Hipopotam” gotowy do startu. Ta rakieta może zmieść SpaceX z rynku
Zmienili nazwę funkcji w Linuksie. Powód jest niecodzienny
Koniec ery Netflixa? Nowy król subskrypcji wchodzi do gry, a Polacy już za niego płacą!
Google rozpieszcza użytkowników smartfonów. Świetna funkcja zawsze pod ręką
Google Pixel 10a rozczaruje wielu. Czy jest na co czekać?
Filmowe historie, które zostają z nami na dłużej. Te hity trzeba zobaczyć
PlayStation rozpieszcza graczy. Końcówka roku pełna niespodzianek
Super tani gadżet z IKEA, który przyda się każdemu. Totalna nowość!
Niezapomniane święta z Hot Wheels. Te prezenty to gwarancja uśmiechu
To by było na tyle, jeśli chodzi o możliwość ugody
Ocalić od zapomnienia
Ostatni kwant
ALH 84001 – meteoryt, o którym mówiono nawet w Białym Domu
HESS zarejestrował kosmiczny elektron o niespotykanej energii [Phys. Rev. Lett.]
Matka ciemnej materii – recenzja biografii “Vera Rubin. Życie”
Satelita, który zerwał się ze smyczy
Wiadomość od Carla Sagana do przyszłych eksploratorów Marsa
Ile najdłużej może trwać zaćmienie Słońca?
Nowa największa liczba pierwsza ma ponad 41 milionów cyfr [GIMPS]
Bumblebee wśród klawiatur. Marvo Meqa 80W – recenzja
Tani pad, który chciał być jak DualSense. Test Monka Contra GT-96
Secret Service i prasa komputerowa w Polsce – Odcinek #127
Najmniejsza ładowarka jaką używałem. Baseus PicoGo GaN Fast Charger 45 W – recenzja
RetroSfera 2025 | Relacja z festiwalu komputerów, gier i konsol
Fantastyczna 4, Pixel 10, Galaxy Z Fold 7 i nowy OLED – Odcinek #126
Gamescom 2025: LEGO Batman to będzie złoto! – Odcinek #125
Jak było na festiwalu Scyzorykon 2025? (Relacja)
Mały, czarny, ale wariat. Baseus PicoGo 10000 mAh 20W – recenzja
Nintendo Switch 2, powrót do The Walking Dead i 10 lat Arkham Knight – Odcinek #124

To może cię zainteresować:

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025
Czym jest Swagger?
  • Programowanie

Czym jest Swagger?

22 lipca 2024
  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
Copyright © All rights reserved. | DarkNews by AF themes.