Co to jest REST (w prostym języku angielskim) [zamknięte]


84

Ostatnio zainteresowałem się zapoznaniem z REST. Próbowałem przeczytać pozycję wiki w REST , ale to nie pomogło. Byłbym bardzo wdzięczny, gdyby ktoś mógł wyjaśnić prostym językiem angielskim (bez niepotrzebnego żargonu technicznego)

  1. Co to jest REST
  2. Jaką pozycję zajmuje w ekosystemie architektury internetowej
  3. Jak ściśle (lub luźno) jest sprzężony z protokołem.
  4. Jakie są alternatywy dla REST i jak się z nimi porównuje REST.

Rozumiem, że odpowiedź na to pytanie w jednym lub dwóch akapitach może być niemożliwa. W takim przypadku odpowiednie linki będą mile widziane.



Uważam, że jest to pouczające, ale nie zbyt szczegółowe: ibm.com/developerworks/webservices/library/ws-restful
NoChance

Zastanawiam się, czy można odpowiedzieć na te pytania?
Gary Rowe

@GaryRowe zaznaczyłem jedną odpowiedź, chyba z jakiegoś powodu została usunięta. Nie rozumiem tej strony.
Gaurav

1
Żadna z poniższych odpowiedzi nie używa słowa „idempotent”. Powinieneś to sprawdzić: idempotencja jest ważnym aspektem każdej architektury RESTful.
Solomon Slow

Odpowiedzi:


10

Co to jest REST (w prostym języku angielskim)

Zwykły angielski:

Reprezentacja: czyn mówienia lub działania w imieniu kogoś.
Przeniesienie stanu: status przeniesienia.


Techniczny:

  • nie przesyłamy rzeczywistego obiektu, ale jego reprezentację w formie (np. xml / json / text do reprezentowania tabeli bazy danych).
  • REST do ujawnienia publicznego interfejsu API przez Internet do obsługi operacji CRUD na danych. REST koncentruje się na dostępie do nazwanych zasobów za pośrednictwem jednego spójnego interfejsu.
  • REST jest reprezentowany przez niektóre typy mediów. Niektóre przykłady typów mediów obejmują XML, JSON i RDF.
  • REST to styl architektoniczny dla architektury zorientowanej na zasoby (ROA) , a nie specyfikacja lub standard.
  • Styl architektoniczny oznacza, że ​​jest to koncepcja, teoria (i jak ją zrealizowano, zależy od Ciebie)
  • Wszystko jest identyfikowane przez unikalny punkt końcowy. tzn. dla każdego zasobu (danych) istnieje jeden punkt końcowy.
  • Punkt końcowy składa się z nazwy domeny z adresem zasobu.

REST vs SOAP


43

Co to jest REST?

Reprezentacyjny transfer stanu. Opisuje, w jaki sposób jeden system może komunikować się z innym stanem. Przykładem może być stan produktu (jego nazwa, opis itp.) Reprezentowany jako XML, JSON lub zwykły tekst. Uogólniona idea stanu nazywana jest zasobem.

Jaką pozycję zajmuje w ekosystemie architektury internetowej?

REST jest zwykle powiązany z interfejsem usług sieciowych, ponieważ HTTP jest zdecydowanie najpopularniejszym protokołem operatora. W modelu 7-warstwowym istnieje na warstwie aplikacji . Jednak zobacz następną sekcję.

Jak ściśle (lub luźno) jest sprzężony z protokołem?

REST nie jest HTTP. Używa HTTP, ponieważ w swojej najbardziej ogólnej formie REST istnieje, aby pomóc maszynie w odwzorowaniu pojęcia czasownika na dowolny zbiór rzeczowników. HTTP zawiera przydatny zestaw czasowników ogólnych (GET, PUT, PATCH itp.), Które można stosować do dowolnych rzeczowników wyrażonych jako URI za pomocą HTTP, np. GET http://example.org/Product(54 ).

Jakie są alternatywy dla REST i jak się z nimi porównuje REST

Jest to podobne do pytania „Jak RESTful jest moim podejściem?” Skorzystaj z poniższej listy (podsumowanej z modelu dojrzałości Richardsona zgodnie z opisem Martina Fowlera ):

Poziom 0 - Bagno POX

Użyj POST do wszystkiego (odczytuje, zapisuje, usuwa). To SOAP, POX, RPI itp. Po prostu używasz HTTP jako tunelu dla własnego protokołu. Celujesz w jeden punkt końcowy, który robi wszystko w oparciu o treść treści żądania.

Poziom 1 - zasoby

Użyj POST do wszystkiego. Kieruj reklamy na wiele punktów końcowych zaprojektowanych tak, aby wyświetlać informacje o określonej rzeczy. Właśnie odkryłeś zasoby.

Poziom 2 - czasowniki HTTP

Używaj czasowników HTTP przeciwko zasobom. Teraz to dostajesz. POST jest do utworzenia, PUT do nadpisania, OPCJE dla dostępnych operacji, USUŃ, no cóż, usuń zasób. W wyniku użycia tych czasowników różne kody statusu HTTP stają się coraz bardziej odpowiednie (202 AKCEPTOWANY ktoś?).

Poziom 3 - Kontrola hipermedialna ( HATEOAS )

W tym momencie dokonujesz ostatniego skoku i wprowadzasz hypermedia jako mechanizm kontroli przepływu. Klient REST nie potrzebuje wcześniejszej wiedzy na temat interakcji z konkretną aplikacją lub serwerem poza ogólnym rozumieniem hipermediów. Można to przekazać w HTTP za pomocą pola nagłówka Content-Type. Formaty tekstowe obejmują AtomPub i (bardziej zwięzły) HAL , podczas gdy HyperAudio działa dobrze dla strumieni audio (patrz SoundCloud i in.)


mówisz, że „REST nie jest HTTP”, ale Roy Fielding wydaje się dość skupiony na tym, że hipertekst jest wymogiem, co w przypadku całej umowy HATEOAS, bez której - według niego - nie robisz „właściwej” REST. Podczas gdy hipertekst! = HTTP, zastanawiam się, ile naprawdę możesz zrobić poza HTTP ...
Andres F.

Zgodnie z tym ( roy.gbiv.com/untangled/2008/… ) Roy Fielding wskazuje, że hipertekst lub jego podzbiór, hipermedia, mogą być wyrażane poza HTML, o ile obsługuje pewnego rodzaju łączenie.
Gary Rowe,

3
HTTP działa dobrze z REST, ponieważ oferuje ustandaryzowane czasowniki do pracy z URI, które reprezentują rzeczowniki w REST w protokole bezstanowym. Ideał. Jednak w swojej rozprawie ( ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm ) zauważa, że ​​„REST nie ogranicza komunikacji do określonego protokołu, ale ogranicza interfejs między komponentami, a zatem zakres założenia interakcji i implementacji, które w innym przypadku mogłyby zostać dokonane między komponentami. ” W związku z tym jest mało prawdopodobne, aby pełna implementacja FTP działała RESTful bez zarządzania stanem po stronie klienta.
Gary Rowe,

2
+1 za link Martina Fowlera. Jak zwykle Martin Fowler napisał artykuł, który opisuje koncepcję w sposób jak najbardziej jasny i zwięzły
Tom Carter

nie obejmowałeś state transferreprezentacji. czynność mówienia lub działania w imieniu kogoś jest reprezentacją, jak to działa w tym kontekście?
Premraj

11

Chociaż REST jest skrótem reprezentatywnego transferu stanu, łatwiejsze może być rozważenie pomysłu wykonywania różnych działań za pomocą nieco intuicyjnego interfejsu.

Na przykład adres URL, taki jak http://www.mysite.com/FindProduct/125/, można interpretować jako osobę, która chce uzyskać informacje o produkcie o identyfikatorze 125.

Podczas gdy REST jest zwykle rozpatrywany w kategoriach HTTP, pojęcie to można zastosować do innych protokołów, jak wskazano w odnośniku do Wikipedii.

Inne przykłady REST, które mogą być przydatne:


2
Dziękujemy za link do „Naucz się REST: samouczek”! To pierwszy samouczek, który przeczytałem, który daje mi poczucie, że nauczyłem się czegoś konkretnego. Wszystko, co przeczytałem (w tym artykuł z Wikipedii) opisuje REST tylko w najbardziej abstrakcyjny sposób, otoczony technicznym żargonem.
Avian00

pierwszy link nie działa. Twoja odpowiedź jest jednak pomocna !!
Entuzjasta
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.