Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

REST

Autor: Piotr Karpiuk o środa 2. Luty 2011

REST (ang. Representational State Transfer) to styl architektury dla systemu dostępu do rozproszonych zasobów, który cechuje nacisk na prostotę, skalowalność i wydajność. Najbardziej znaną implementacją jest sieć World Wide Web.

CRUD REST SQL
CREATE POST INSERT
READ GET SELECT
UPDATE PUT UPDATE
DELETE DELETE DELETE

RESTful web service to usługa wykorzystująca protokół HTTP i wymienione niżej zasady architektury REST. Dla odmiany usługa SOAP-based web service bazuje na protokole SOAP, który wykorzystuje HTTP, XML i RPC.

Serwisy społecznościowe (eBay, Facebook, Yahoo!, Youtube) często udostępniają deweloperom interfejs API który marketing określa mianem REST, choć w praktyce zwykle jest to przykład POX/HTTP wykorzystujący HTTP do tunelowania wywołań funkcji i XML jako format danych. Tym niemniej daje się zauważyć wyraźna tendencja w aplikacjach Web 2.0 do unikania używania protokołu SOAP i oferowania interfejsu bazującego na REST lub przypominającego REST. Kanoniczną implementacją architektury REST jest Atom Publishing Protocol, interfejsy REST udostępniają m.in. Amazon S3, OpenStreetMap.

Podstawowe cechy architektury REST:

  • jednolity interfejs:
    • każdy zasób ma swój globalny identyfikator (np. URL dla WWW),
    • na żądanie serwer zwraca klientowi reprezentację zasobu (HTML, XML, JSON, z określonym kodowaniem znaków, np. UTF-8) która zawiera komplet informacji o tym jak go zinterpretować (np. typ MIME w nagłówkach HTTP) i może zawierać identyfikatory powiązanych zasobów (przykładem są linki na stronie HTML),
    • klient wchodzi w interakcję z zasobami na podstawie identyfikatora zasobu i akcji jaką chce na nim wykonać (w protokole HTTP metoda GET pobiera reprezentację zasobu, POST tworzy zasób, PUT aktualizuje go, DELETE usuwa; GET, PUT i DELETE są idempotentne, a GET nie modyfikuje bazy zasobów), o ile uprawnienia mu na to pozwalają; nie musi nic wiedzieć o tunelach, serwerach proxy itp. po drodze do serwera (ani nie potrzebuje pewności że komunikuje się z serwerem a nie proxy)
  • architektura klient-serwer gdzie klient inicjuje połączenie i wysyła zlecenie, a serwer zwraca odpowiedź; klient nie zajmuje się przechowywaniem danych (z wyjątkiem cache na własny użytek), serwer nie interesuje się interfejsem użytkownika,
  • bezstanowość – serwer nie przechowuje po swojej stronie kontekstu klienta; zlecenie do serwera zawiera wszystkie informacje konieczne do obsługi tego żądania; jakiekolwiek pojęcie sesji musi być implementowane przez klienta,
  • wielowarstwowość i cache – po drodze do serwera mogą istnieć systemy buforowania (serwery proxy, lokalny cache klienta), które poprawiają skalowalność i wydajność oraz redukują czas oczekiwania na odpowiedź.

Frameworki aplikacji webowych wykorzystujące REST, to m.in.:

Share and Enjoy:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • LinkedIn
  • MySpace
  • Wykop

Zostaw komentarz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>