REST – ciekawszy sposób na komunikację client-server

REST (ang. Representational State Transfer) jest wzorcem narzucającym dobre praktyki tworzenia architektury aplikacji rozproszonych. RESTful Webservices (inaczej RESTful web API) jest usługą sieciową zaimplementowaną na bazie protokołu HTTP i głównych zasad wzorca REST. W tym wpisie postaram się pokazać (bardzo) podstawowe założenia.

Ważnym założeniem REST jest istnienie zasobów (ang. resources) jako źródeł danych a także żądana akcja. Ale może po kolei…

Zapomniane metody HTTP w Ajaksie

Komunikując się z serwerem najczęściej korzysta się z dwóch metod:

  • GET
  • POST

Co więcej, często wykorzystuje się je nieprzemyślany sposób (aby nie powiedzieć losowy). Nigdy nie wiadomo, czy żądanie doda, usunie, nadpisze czy tylko pobierze dane z serwera. A szkoda, bo przecież o ile ładniej jest patrzeć w konsole Firebuga i po samym rodzaju metody odczytywać jakiego rodzaju operacja została wywołana.

Tytułowe „zapomniane” metody to (jest ich więcej, ale nie są potrzebne dla tego wpisu):

  • PUT
  • DELETE

Taki zestaw metod jakimi możemy wysłać żądanie do serwera pozwala, aby każdej z nich przypisać na stałe jeden typ operacji.

metoda typ operacji
GET pobieranie danych
POST dodawanie danych
PUT edycja danych
DELETE usuwanie danych

Na widocznej z boku tabelce widać ważne założenie RESTful Webservices. Jest to związanie niepodzielnie metody HTTP wykorzystanej przez żądanie ajaksowe z typem operacji, jaki mamy zamiar wykonać.

Zasoby

Innym ważnym zagadnieniem jest posiadanie zasobów (ang. resources). Przez zasób w przypadku aplikacji internetowej rozumiemy adres pewnego webservice’u, np:

[code]http://example.com/dog[/code]

Pod takim adresem znajdować się będzie odpowiedni skrypt, który mając do czynienia z odpowiednim zestawem danych wykona dla nas pewną akcję.

Przykład: Za pomocą zasobu chcemy kontrolować bazę danych naszego serwisu o psach. Powiążmy jeszcze zasób z metodą:

zasób metoda co się stanie
http://example.com/dog
GET Pobranie wszystkich psów
http://example.com/dog/1
GET Pobranie psa o id = 1
http://example.com/dog
POST Dodawanie nowego psa do bazy (dane na jego temat są przesyłane w ciele żądania)
http://example.com/dog
PUT Edycja danych o psie (dane przesyłane są w ciele żądania)
http://example.com/dog/1
DELETE Usunięcie psa o id=1

Korzystając z takiego rozwiązania, nie zaglądając wcale w ciało żądań HTTP możemy śmiało określić, co się dzieje w konkretnych sytuacjach (lub co powinno się dziać ;)).
Widok konsoli firebug w aplikacji wykorzystującej RESTful webservices

By wiedzieć więcej

Sądzę, że zdecydowanie warto jest się zapoznać z RESTful Webservices, które w ostatnich latach staje się coraz popularniejsze i zaczyna wypierać strasznie opasły SOAP. Aby zgłębić wiedzę dotyczącą tego wzorca polecam lekturę:

2 odpowiedzi do “REST – ciekawszy sposób na komunikację client-server”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *