Jaka jest różnica między REST a RESTful

540

Jaka jest różnica między systemem REST a systemem RESTful?

Z kilku rzeczy, które przeczytałem, większość tak zwanych usług REST to tak naprawdę usługi RESTful. Jaka jest różnica między nimi.

AwkwardCoder
źródło
3
Powodem tego pytania jest to, że jeśli czytasz artykuł w linku i sprawdzasz, co Dr Fielding myśli o większości implementacji REST, wcale nie są to systemy REST. Wykazują zachowanie RESTful, ale nie mogą być klasyfikowane jako systemy REST.
AwkwardCoder,
4
Czytam ten artykuł, ale nie sądzę, że doprowadził go do tak semantycznie bezużytecznych różnic.
JasonTrue
3
Artykuł w Wikipedii na temat REST - en.wikipedia.org/wiki/Representational_State_Transfer - akapit drugi - „Zgodność z ograniczeniami REST jest często określana jako„ RESTful ”.
Nate
1
@PramodNikumbh udzielił prawidłowej odpowiedzi poniżej. System „REST” to system, który pasuje do szerszej definicji REST. Pokazuje przynajmniej niektóre zasady odpoczynku. „Restful” opisuje system o wiele bardziej zgodny z REST.
Andrew Norman,
Cóż, myślę, że w nazwie występuje zamieszanie, „ful” w RESTful dezorientuje bezpaństwowości i stanowość, a są to dwie różne rzeczy, REST i RESTful według mojej osobistej opinii, muszą być BEZ STATYSTYKI. wyobraź sobie stanowy REST o nazwie RESTles. :)
Waheed

Odpowiedzi:

487

Reprezentatywny transfer stanu (REST) to styl architektury oprogramowania. Jak opisano w rozprawie Roy'a Fieldinga, REST jest „stylem architektonicznym”, który zasadniczo wykorzystuje istniejącą technologię i protokoły sieciowe.

RESTful jest zwykle używany w odniesieniu do usług sieciowych wdrażających taką architekturę.

Justin Ethier
źródło
146
Więc REST jest architekturą i RESTful przymiotnikiem?
manei_cc
4
@manei_cc: Chociaż w praktyce znajdziesz usługi o nazwie RESTful, które nie podążają za architekturą REST i są w zasadzie podobne do REST, REST-chcący itp. Dlatego zawsze zwracaj uwagę, że „usługa RESTful” niekoniecznie jest budowana przy użyciu REST architektura, ale prawdziwa, jak napisał Justin Ethier: wykorzystuje istniejącą technologię i protokoły sieciowe .
Azder
7
RESTful powinien być używany dla interfejsów API, które naprawdę szanują REST. Widziałem zbyt wiele usług „REST”, które korzystały tylko z GET lub POST. RESTful akcentuje pełne wykorzystanie czasowników HTTP i konwencji nazewnictwa adresów URL. Ale to mój punkt widzenia.
Martin
1
architectczego? adresów URL? jak https://translation.googleapis.com/language/translate/v2to jest styl REST?
Asif Mushtaq
1
stackoverflow.com/users/3807248/pramod-nikumbh ma poprawną odpowiedź poniżej
Andrew Norman
192

Usługi oparte na REST / Architektura vs. Usługi RESTFUL / Architektura

Aby rozróżnić lub porównać te 2, powinieneś wiedzieć, co to jest REST .

REST ( RE prezentacyjny S tate T ransfer) jest w zasadzie styl architektoniczny rozwoju mającego pewne zasady:

  • Powinien być bezpaństwowcem

  • Powinien mieć dostęp do wszystkich zasobów z serwera przy użyciu tylko identyfikatora URI

  • Nie ma wbudowanego szyfrowania

  • Nie ma sesji

  • Wykorzystuje jeden i tylko jeden protokół - HTTP

  • Do wykonywania operacji CRUD, należy używać czasowników takich jak HTTP get, post, putidelete

  • Powinien zwrócić wynik tylko w postaci JSON lub XML, atom, OData itp. (Lekkie dane)

REST based services przestrzegaj niektórych z powyższych zasad, a nie wszystkich

RESTFUL services oznacza, że ​​przestrzega wszystkich powyższych zasad.

Jest podobny do koncepcji:

Object-based languagesobsługuje wszystkie koncepcje OOP, przykłady : C ++, C #

Object oriented languagesobsługuje niektóre funkcje OOP, przykłady : JavaScript, VB


Przykład :

ASP Dot NET MVC 4 działa REST-Basedpodczas gdy Microsoft WEB API jest RESTFul.

MVC obsługuje tylko niektóre z powyższych zasad REST, podczas gdy WEB API obsługuje wszystkie powyższe zasady REST.

MVC obsługuje tylko następujące elementy z interfejsu API REST

  • Możemy uzyskać dostęp do zasobu za pomocą URI

  • Obsługuje czasownik HTTP, aby uzyskać dostęp do zasobu z serwera

  • Może zwracać wyniki w postaci JSON, XML, czyli HTTPResponse.

Jednak w tym samym czasie w MVC

  • Możemy skorzystać z sesji

  • Możemy sprawić, by było to stanowe

  • Możemy zwrócić wideo lub obraz z metody akcji kontrolera, która zasadniczo narusza zasady REST

Dlatego MVC jest, REST-Basedpodczas gdy WEB API obsługuje wszystkie powyższe zasady i jest RESTFul.

Pramod Nikumbh
źródło
10
Nie rozumiem, dlaczego zostało to odrzucone, ta odpowiedź zawiera wiele wyjaśnień w pytaniu.
Marcovecchio,
5
najlepsza jak dotąd odpowiedź
Limon
2
To najlepsza odpowiedź.
Mário Meyrelles,
2
możesz użyć FTP z REST. zobacz: stackoverflow.com/questions/35534812/…
crazyTech
7
Języki w powyższych kategoriach „obiektowe” i „obiektowe” są odwrócone. Języki zorientowane obiektowo są zgodne ze wszystkimi zasadami OOPS, podczas gdy języki oparte na obiektach są zgodne z niektórymi.
Mrchief
119

„REST” to paradygmat architektoniczny. „RESTful” opisuje użycie tego paradygmatu.

Pojedynczy strzał
źródło
architectczego? adresów URL? jak https://translation.googleapis.com/language/translate/v2to jest styl REST?
Asif Mushtaq
2
Architektura REST wymaga wielu cech. Nie można powiedzieć, że coś jest zgodne z zasadami REST, po prostu wyświetlając adres URL.
SingleShot,
42

Jak powiedział Jason w komentarzach, RESTful jest po prostu używany jako przymiotnik opisujący coś, co szanuje ograniczenia REST.

Darrel Miller
źródło
29

REST oznacza reprezentatywny transfer stanu. Oznacza to, że samo państwo nie jest przenoszone, lecz jedynie jego reprezentacja. Najczęstszym przykładem jest aplikacja oparta wyłącznie na serwerze HTML (bez javascript). Przeglądarka nic nie wie o samej aplikacji, ale poprzez łącza i zasoby serwer jest w stanie przenieść stan aplikacji do przeglądarki. Gdy przycisk normalnie zmieniałby zmienną stanu (np. Strona otwarta) w zwykłej aplikacji systemu Windows, w przeglądarce masz link reprezentujący taką zmianę stanu.

Chodzi o użycie hipermediów. I może stworzyć nowe typy hipermediów. Potencjalnie możemy rozszerzyć przeglądarkę o javascript / AJAX i stworzyć nowe niestandardowe typy hipermediów. I mielibyśmy prawdziwą aplikację REST.

To jest moja krótka wersja tego, co oznacza REST, problem polega na tym, że jest trudny do wdrożenia. Osobiście mówię RESTful, kiedy chcę odwoływać się do zasad REST, ale wiem, że tak naprawdę nie wdrażam całej koncepcji REST. Tak naprawdę nie mówimy SOAPful, ponieważ albo używasz SOAP, albo nie. Myślę, że większość ludzi nie robi REST w sposób przewidziany przez jego twórcę, Roya Fieldinga, w rzeczywistości wdrażamy architektury RESTful lub podobne do REST. Możesz zobaczyć jego rozprawę i znajdziesz skrót REST, ale nie słowo RESTful.

Arturo Hernandez
źródło
23

REST to styl architektury oprogramowania dla oprogramowania rozproszonego

Zgodność z ograniczeniami REST jest określana jako „RESTful”.

Bardzo używany dziś do tworzenia usług internetowych jako alternatywy dla SOAP.

Tutaj masz kilka linków do sprawdzenia

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/

Claudio Redi
źródło
13

dzięki za odpowiedzi. Przeczytaj ten artykuł Alexa Rodrigueza, który sugeruje, że usługa internetowa RESTful ma 4 podstawowe cechy, które są:

  1. Używaj metod HTTP jawnie.
  2. Bądź bezpaństwowcem.
  3. Ujawnij identyfikatory URI podobne do struktury katalogów.
  4. Prześlij XML, JavaScript Object Notation (JSON) lub oba.
Kumait
źródło
Ma w rzeczywistości 6 ograniczeń.
IronBlossom,
2
@IronBlossom Care, aby zaktualizować odpowiedź o brakujące dwa?
Paul Fleming
1
link martwy, nowy URL wydaje się być IBM - RESTful Web Services
dthal
10

Reprezentatywny transfer stanu (REST) ​​to styl architektury oprogramowania dla rozproszonych systemów hipermedialnych, takich jak World Wide Web. Termin „reprezentatywny transfer państwowy” został wprowadzony i zdefiniowany w 2000 r. Przez Roy'a Fieldinga 1 [2] w jego rozprawie doktorskiej. Fielding jest jednym z głównych autorów specyfikacji protokołu HTTP (Hypertext Transfer Protocol) w wersjach 1.0 i 1.1. Zgodność z ograniczeniami REST jest określana jako „RESTful”. Źródło: Wikipedia

Andersson Melo
źródło
8

Usługi sieciowe to przede wszystkim strony internetowe, których treść są konsumowane przez programy komputerowe, a nie przez ludzi. REST to zestaw zasad architektonicznych, które stanowią, że usługi sieciowe powinny maksymalnie wykorzystywać HTTP i inne standardy sieciowe, aby programy zdobywały wszystkie dobre rzeczy, które ludzie mogą już wydostać się z Internetu. REST często kontrastuje z usługami sieciowymi SOAP i innymi usługami sieciowymi zorientowanymi na „zdalne wywołanie procedury”.

Prezentacje Stefana Tiłkowa w REST na Parleys.com są całkiem dobre, szczególnie ta .

W przypadku książki nie ma nic lepszego niż Richardson i Ruby's Restful Web Services .

Jim Ferrans
źródło
Czy zwykłą stronę internetową można uznać za aplikację REST?
yoyo_fun
1
@yoyo_fun: Tak, można również zbudować RESTYSTYCZNIE zwykłą stronę internetową. Na pewnym poziomie abstrakcji to, czy serwer zwraca HTML człowiekowi, czy JSON (powiedzmy) programowi, jest nieistotne.
Jim Ferrans
5

Usługa oparta na REST nazywa się „usługą RESTful”.

Źródło Opieram się na opublikowaniu: Archiwum Dr.Dobbs

nickolay
źródło
4

Istnieją 4 poziomy API zdefiniowane w modelu dojrzałości Richardsona. Są one zdefiniowane jako:

  • poziom 0: każdy system, który ma jeden punkt końcowy dla wszystkich apis (SOAP lub RPC należą do tej kategorii). Api poziomu 0 mogą również przypominać „komendy”.

  • poziom 1: system opisany przez ResourceUri. Jest to system, który definiuje wiele identyfikatorów URI opartych na jednostkach (zamiast mieć jeden punkt końcowy, jak w przypadku systemów poziomu 0). Te identyfikatory URI mogą korzystać z różnych akcji HTTP (POST, GET, PUT itp.) W celu zaimplementowania różnych akcji przeciwko temu zasobowi.

  • poziom 2: aka poziom 1 z zgodnym użyciem standardowych metod / czasowników HTTP i odpowiedzi na kod o wielu statusach

  • poziom 3: aka poziom 2 plus HATEOAS (hipermedia zawarte w odpowiedzi, która opisuje dodatkowe połączenia, które możesz wykonać)

Podczas gdy poziomy 1, poziom 2 i poziom 3 można uznać za systemy REST, tylko bardziej rygorystyczne poziomy (inaczej poziom 2 i poziom 3) są uważane za RESTful.

Więc zasadniczo wszystkie RESTful api są REST api, ale nie wszystkie REST api są RESTful

definicja modelu dojrzałości Richardsona

Andrew Norman
źródło
2

Pomyśl o REST jako o „klasie” architektonicznej, podczas gdy RESTful jest dobrze znaną „instancją” tej klasy.

Proszę pamiętać o „”; nie mamy tutaj do czynienia z „prawdziwymi” obiektami programistycznymi.

Poklepać
źródło
1

„Usługa REST” i „usługa RESTful” są jednym i tym samym.

System RESTful to każdy system zgodny z konwencjami REST zdefiniowanymi w oryginalnym dokumencie, który stworzył ideę aplikacji sieciowych RESTful .

Warto zauważyć, że istnieją różne poziomy RESTfulness. Ogólnie rzecz biorąc, REST jest stylem, a nie standardem, więc jest miejsce na interpretację w zależności od potrzeb. jednym z przykładów są hierarchiczne adresy URL zasobów (np. /things/ID/relatedthings) a płaskie adresy URL (np. /things/IDi /relatedthings?thing=ID)

Brenden
źródło
1

REST (REpresentation State Transfer) to architektura, za pomocą której tworzone są WebServices.

i

RESTful to sposób pisania usług przy użyciu architektur REST. Usługi RESTful udostępniają zasoby w celu identyfikacji obiektów docelowych do interakcji z klientami.

Manas
źródło
0

REST to architektoniczny wzorzec do tworzenia usług internetowych. Usługa RESTful to taka, która implementuje ten wzorzec.

sajadre
źródło