Po przeczytaniu wielu informacji na temat różnic między REST i SOAP mam wrażenie, że REST to tylko jedno słowo na HTTP. Czy ktoś może wyjaśnić, jaką funkcjonalność REST dodaje do HTTP?
Uwaga : nie szukam porównania REST względem SOAP.
Aktualizacja : Dziękujemy za odpowiedzi. Teraz stało się dla mnie jasne, że REST jest tylko zbiorem reguł dotyczących używania HTTP. Dlatego zamieściłem dalsze informacje na temat zalet tych konwencji .
Uwaga : Teraz rozumiem znaczenie REST; jak zauważa Emil Iwanow , REST oznacza używanie HTTP tak, jak powinno być. Jednak nie jestem pewien, czy to zasługuje na swój własny termin, i na pewno nie mam wokół tego szumu.
Odpowiedzi:
Nie, REST jest sposób HTTP powinien być stosowany .
Dziś używamy tylko niewielkiej części metod protokołu HTTP - mianowicie
GET
iPOST
. Aby to zrobić, należy użyć wszystkich metod protokołu.Na przykład REST dyktuje użycie
DELETE
do wymazania dokumentu (czy to pliku, stanu itp.) Za URI, podczas gdy w przypadku HTTP niewłaściwie użyjesz zapytaniaGET
lubPOST
zapytania...product/?delete_id=22
.źródło
HTTP to protokół używany do komunikacji, zwykle używany do komunikacji z zasobami internetowymi lub dowolną aplikacją z klientem przeglądarki internetowej.
REST oznacza, że główną koncepcją używaną podczas projektowania aplikacji jest Zasób: dla każdej akcji, którą chcesz wykonać, musisz zdefiniować zasób, na którym zwykle wykonujesz tylko operację CRUD, co jest prostym zadaniem. w tym celu bardzo wygodne jest użycie 4 czasowników używanych w protokole HTTP przeciwko 4 operacjom CRUD (Get for Read, POST jest dla CREATE, PUT dla UPDATE i DELETE dla DELETE). to w przeciwieństwie do starszej koncepcji RPC (Remote Procedura Call), w której masz zestaw działań, które chcesz wykonać w wyniku wywołania użytkownika. jeśli zastanawiasz się na przykład, jak opisać facebooka jak w poście, z RPC możesz stworzyć usługi o nazwie AddLikeToPost i RemoveLikeFromPost i zarządzać nim wraz ze wszystkimi innymi usługami związanymi z postami na FB, więc nie będziesz musiał tworzyć specjalnych obiekt dla Like. z REST będziesz mieć obiekt Like, który będzie zarządzany osobno za pomocą funkcji Usuń i Utwórz. Oznacza to również, że będzie opisywać osobny byt w twojej bazie danych. może to wyglądać na niewielką różnicę, ale takie działanie zwykle daje znacznie prostszy kod i znacznie prostszą aplikację. przy takim projekcie większość logiki aplikacji jest oczywista ze struktury (modelu) obiektu, w przeciwieństwie do RPC, w której zwykle trzeba by wyraźnie dodać dużo więcej logiki.
projektowanie aplikacji RESTful jest zwykle o wiele trudniejsze, ponieważ wymaga opisania skomplikowanych rzeczy w prosty sposób. opisywanie wszystkich funkcjonalności przy użyciu tylko funkcji CRUD jest trudne, ale po wykonaniu tego Twoje życie byłoby o wiele prostsze i okaże się, że napiszesz o wiele krótsze metody.
Jeszcze jedną obecną architekturą REST ograniczającą jest nieużywanie kontekstu sesji podczas komunikacji z klientem (bezstanowy), co oznacza, że wszystkie informacje muszą zrozumieć, kto jest klientem i czego chce, jest przekazywany wraz z wiadomością internetową. każde wywołanie funkcji ma charakter opisowy, nie ma wcześniejszej rozmowy z klientem, do której można odwoływać się w komunikacie. dlatego klient nie mógł powiedzieć „daj mi następną stronę”, ponieważ nie masz sesji do przechowywania poprzedniej strony i jakiego rodzaju strony chcesz, klient musiałby powiedzieć „mam na imię yuval, dostać me strona 2 określonego postu na określonym forum ". oznacza to, że w komunikacji musiałoby zostać przesłanych nieco więcej danych, ale pomyśl o różnicy między znalezieniem błędu zgłoszonego za pomocą funkcji „przejdź do następnej strony”, a nie „
Oczywiście jest o wiele więcej, ale moim zdaniem są to główne pojęcia w łyżeczce do herbaty.
źródło
HTTP to protokół aplikacji. REST to zestaw reguł, których przestrzeganie umożliwia budowanie aplikacji rozproszonej, która ma określony zestaw pożądanych ograniczeń.
Jeśli szukasz najbardziej znaczących ograniczeń usługi REST, które odróżniają aplikację RESTful od dowolnej aplikacji HTTP, powiedziałbym, że ograniczenie „samoopisania” i ograniczenie hipermedia (inaczej Hypermedia jako silnik stanu aplikacji (HATEOAS)) to najważniejsze.
Ograniczenie samoopisu wymaga, aby żądanie RESTful było całkowicie samoopisujące w intencji użytkowników. Umożliwia to pośrednikom (serwerom proxy i pamięci podręcznej) bezpieczne działanie na wiadomości.
Ograniczenie HATEOAS polega na przekształceniu aplikacji w sieć linków, w której aktualny stan klienta zależy od jego miejsca w tej sieci. Jest to podchwytliwa koncepcja i wymaga więcej czasu na wyjaśnienie niż obecnie.
źródło
Jak rozumiem, REST wymusza użycie dostępnych poleceń HTTP zgodnie z ich przeznaczeniem.
Na przykład mógłbym zrobić:
Ale z resztą użyłbym metody żądania „DELETE”, eliminując potrzebę param zapytania „metoda”
źródło
Nie do końca...
http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.looselycoupled.com/glossary/SOAP
źródło
REST to specyficzny sposób podejścia do projektowania dużych systemów (takich jak sieć).
Jest to zestaw „reguł” (lub „ograniczeń”).
HTTP to protokół, który próbuje przestrzegać tych reguł.
źródło
REST = Reprezentatywny transfer stanu
REST to zestaw reguł, których przestrzeganie umożliwia budowanie aplikacji rozproszonej, która ma określony zestaw pożądanych ograniczeń.
REST jest protokołem służącym do wymiany dowolnych komunikatów (XML, JSON itp.), Które mogą wykorzystywać HTTP do ich przesyłania.
Funkcje:
Jest bezstanowy, co oznacza, że idealnie nie powinno się utrzymywać połączenia między klientem a serwerem. Klient jest odpowiedzialny za przekazanie swojego kontekstu do serwera, a następnie serwer może zapisać ten kontekst w celu przetworzenia dalszego żądania klienta. Na przykład sesja obsługiwana przez serwer jest identyfikowana przez identyfikator sesji przekazany przez klienta.
Zalety bezpaństwowości:
Wady bezpaństwowości:
Metody HTTP obsługiwane przez REST:
GET: / string / someotherstring Jest idempotentny i idealnie powinien zwracać te same wyniki przy każdym wywołaniu
PUT: Tak samo jak GET. Idempotent i służy do aktualizacji zasobów.
POST: powinien zawierać adres URL i treść używane do tworzenia zasobów. Wiele połączeń powinno idealnie zwracać różne wyniki i tworzyć wiele produktów.
USUŃ: Służy do usuwania zasobów na serwerze.
GŁOWA:
Metoda HEAD jest identyczna z GET, z tym wyjątkiem, że serwer NIE MOŻE zwracać treści komunikatu w odpowiedzi. Meta informacje zawarte w nagłówkach HTTP w odpowiedzi na żądanie HEAD MUSZĄ BYĆ identyczne z informacjami wysłanymi w odpowiedzi na żądanie GET.
OPCJE:
Ta metoda pozwala klientowi określić opcje i / lub wymagania związane z zasobem lub możliwości serwera, bez sugerowania akcji zasobu lub inicjowania pobierania zasobu.
Odpowiedzi HTTP
Przejdź tutaj, aby uzyskać wszystkie odpowiedzi .
Oto kilka ważnych: 200 - OK 3XX - Potrzebne są dodatkowe informacje od klienta i przekierowania adresu URL 400 - Błędne żądanie
401 - Brak dostępu do
403 - Zabronione
Żądanie było prawidłowe, ale serwer odmawia działania. Użytkownik może nie mieć niezbędnych uprawnień do zasobu lub może wymagać jakiegoś konta.
404 - Nie znaleziono
Żądany zasób nie został znaleziony, ale może być dostępny w przyszłości. Kolejne żądania klienta są dopuszczalne.
405 - Niedozwolona metoda Metoda żądania nie jest obsługiwana dla żądanego zasobu; na przykład żądanie GET w formularzu, które wymaga przedstawienia danych za pośrednictwem POST, lub żądanie PUT dla zasobu tylko do odczytu.
404 - Nie znaleziono żądania
500 - Błąd wewnętrznego serwera
502 - Błąd błędnej bramy
źródło
HTTP to protokół komunikacyjny, który przesyła wiadomości przez sieć. SOAP jest protokołem służącym do wymiany wiadomości opartych na XML, które mogą wykorzystywać HTTP do ich przesyłania. Reszta to protokół służący do wymiany dowolnych komunikatów (XML lub JSON), które mogą wykorzystywać HTTP do ich przesyłania.
źródło
HTTP is a contract, a communication protocol and REST is a concept, an architectural style
które mogą wykorzystywać HTTP, FTP lub inne protokoły komunikacyjne, ale są szeroko stosowane z HTTP.REST implies a series of constraints about how Server and Client should interact
.HTTP is a communication protocol with a given mechanism for server-client data transfer
, jest najczęściej używany w REST API tylko dlatego, żeREST was inspired by WWW (world wide web) which largely used HTTP
przed zdefiniowaniem REST, więc łatwiej jest zaimplementować styl REST API z HTTP.1.
Interakcje między serwerem a klientem powinny być opisywane wyłącznie za pomocą hipertekstu.2.
Serwer i klient powinny być luźno powiązane i nie poczynić żadnych wzajemnych założeń. Klient powinien znać tylko punkt wejścia zasobu. Dane dotyczące interakcji powinny zostać dostarczone przez serwer w odpowiedzi.3.
Serwer nie powinien przechowywać żadnych informacji o kontekście żądania. Żądania muszą być niezależne i idempotentne (oznacza to, że jeśli to samo żądanie jest powtarzane nieskończenie, pobierany jest dokładnie ten sam wynik)A HTTP to tylko protokół komunikacyjny (narzędzie), który może pomóc w osiągnięciu tego celu.
Aby uzyskać więcej informacji, sprawdź te linki:
https://martinfowler.com/articles/richardsonMaturityModel.html http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
źródło
REST niekoniecznie jest związany z HTTP . Usługi sieciowe RESTful to tylko usługi sieciowe zgodne z architekturą RESTful.
źródło
1-Client-server
,2-stateless
,3-casheable
. Jakie dodatkowe funkcje / ograniczenia REST nakładają na HTTP? Co możemy zrobić z REST, czego nie da się zrobić przy pomocy samego HTTP?Od Nie znasz różnicy między HTTP a REST
źródło
Interfejsy API REST muszą być sterowane hipertekstem
Z bloga Roya Fieldinga oto zestaw sposobów na sprawdzenie, czy budujesz API HTTP czy REST API:
źródło