@John Saunders: Jak to możliwe, że duplikat? Drugi facet najwyraźniej wie, czym jest REST, podczas gdy Nathan jest zdezorientowany.
Fake Code Monkey Rashid,
Czułem, że ten drugi odpowie na jego pytanie. Jeśli nikt inny się nie zgodzi, to głosowanie za bliskim starzeją się. Mamy około dziesięciu odpowiedzi na to pytanie. Wystarczy kliknąć tag „reszta”, a zobaczysz je wszystkie.
John Saunders,
1
REST to zestaw reguł do tworzenia usług internetowych. Jeśli API jest zbudowane zgodnie z tymi regułami, jest to API REST. Sposób, w jaki wyjaśniłem REST mojej gumowej kaczce, wyjaśnia nieformalnie niektóre z tych zasad.
User42
Odpowiedzi:
127
REST nie jest określoną usługą internetową, ale koncepcją projektową (architekturą) do zarządzania informacjami o stanie. Przełomowym artykułem na ten temat była rozprawa Roya Thomasa Fieldinga (2000) „Architectural Styles and the Design of Network-based Software Architectures” ( dostępna online na Uniwersytecie Kalifornijskim w Irvine).
Najpierw przeczytaj post Ryana Tomayko. Jak wyjaśniłem REST mojej żonie ; to świetny punkt wyjścia. Następnie przeczytaj aktualną rozprawę Fieldinga. Nie jest tak zaawansowana, ani długa (sześć rozdziałów, 180 stron)! (Znam was, dzieciaki w szkole, lubicie krótkie).
EDYCJA: Wydaje mi się, że nie ma sensu próbować wyjaśniać REST. Ma tak wiele pojęć, jak skalowalność, widoczność (bezpaństwowość) itp., Które czytelnik musi zrozumieć, a najlepszym źródłem ich zrozumienia jest faktyczna rozprawa. To znacznie więcej niż POST / GET itp.
@Nathan, zaufaj mi, miałem ten sam problem, co Ty wcześniej. Przeczytaj tezę, może przejrzyj ją kilka razy powoli, ale zrozumiesz koncepcję, w rzeczywistości nie jest to wcale trudne. Ludzie mają po prostu tendencję do wyjaśniania tego słabo.
Anders,
Kiedy programiści próbują wykorzystać REST i próbują zrobić to tylko na swoim kodzie (bez planowania całego systemu z myślą o REST), nadchodzi piekło :-)
karatedog
@Anders, Biorąc pod uwagę, że REST jest tym, co to jest, jak można porównać REST z usługami sieciowymi?
REST to wzorzec projektowania oprogramowania zwykle używany w aplikacjach internetowych. W kategoriach laika oznacza to, że jest to powszechnie stosowany pomysł, stosowany w wielu różnych projektach. To oznacza REpresentational State Transfer . Podstawową ideą REST jest traktowanie obiektów po stronie serwera (jak w wierszach w tabeli bazy danych) jako zasobów, które można utworzyć lub zniszczyć.
Najbardziej podstawowym sposobem myślenia o REST jest sposób formatowania adresów URL aplikacji internetowych. Na przykład, jeśli Twój zasób nazywał się „posty”, to:
/posts Byłby to sposób, w jaki użytkownik uzyskałby dostęp do WSZYSTKICH postów do wyświetlenia.
/posts/:id Byłby to sposób, w jaki użytkownik uzyskałby dostęp i przeglądał indywidualny post, pobrany na podstawie ich unikalnego identyfikatora.
/posts/new Byłby to sposób wyświetlenia formularza do tworzenia nowego posta.
Wysłanie żądania POST do /usersbyłoby w jaki sposób faktycznie utworzyłbyś nowy post na poziomie bazy danych.
Wysłanie żądania PUT do /users/:idbyłoby sposobem, w jaki zaktualizowałbyś atrybuty danego postu, ponownie identyfikowanego przez unikalny identyfikator.
Wysłanie żądania DELETE do /users/:idbyłoby sposobem, w jaki usunąłbyś dany post, ponownie identyfikowany przez unikalny identyfikator.
Jak rozumiem, wzorzec REST został spopularyzowany (dla aplikacji internetowych) głównie przez framework Ruby on Rails, który kładzie duży nacisk na trasy RESTful. Chociaż mogę się co do tego mylić.
Może nie jestem najbardziej kompetentny, aby o tym mówić, ale tak się tego nauczyłem (szczególnie w przypadku programowania w Railsach).
Gdy ktoś odnosi się do „REST API”, ogólnie chodzi o interfejs API, który używa adresów URL RESTful do pobierania danych.
Masz szczęście, ponieważ Railsy są zbudowane na zasadach REST i jeśli użyjesz narzędzi Railsowych, twój kod będzie RESTful. Jednak są tam programiści, którzy nie rozumieją Jacka na temat REST, kodują, co chcą, i na końcu wykorzystują to „formatowanie adresów URL”, ponieważ jest modne.
karatedog
8
gdzie kiedykolwiek / users został użyty w tej odpowiedzi, czy nie powinien to być / posts?
Mayuresh Srivastava
@MayureshSrivastava Zauważ, że przykłady PUT mają: id i przykłady POST nie mają: id. Google do końca historii. (POST: non-safe, non-idempotent; PUT: non-safe, idempotent)
Ajeet Ganga
38
RESTto styl architektoniczny i projekt dla sieciowych architektur oprogramowania.
RESTkoncepcje nazywane są zasobami. Reprezentacja zasobu musi być bezstanowa. Jest reprezentowany przez pewien rodzaj mediów. Niektóre przykłady typów nośników należą XML, JSONi RDF. Zasoby są manipulowane przez komponenty. Komponenty żądają zasobów i manipulują nimi za pośrednictwem standardowego, jednolitego interfejsu. W przypadku HTTP ten interfejs składa się ze standardowych ops HTTP, na przykład GET, PUT, POST, DELETE.
RESTjest zwykle używany HTTP, głównie ze względu na prostotę protokołu HTTP i jego bardzo naturalne odwzorowanie na zasady RESTful. Jednak REST nie jest powiązany z żadnym określonym protokołem.
Podstawowe zasady REST
Komunikacja klient-serwer
Architektury klient-serwer charakteryzują się bardzo wyraźnym rozdziałem problemów. Wszystkie aplikacje zbudowane w stylu RESTful muszą również być w zasadzie klient-serwer.
Bezpaństwowcy
Każde żądanie klienta skierowane do serwera wymaga pełnej reprezentacji jego stanu. Serwer musi być w stanie w pełni zrozumieć żądanie klienta bez korzystania z kontekstu serwera lub stanu sesji serwera. Wynika z tego, że cały stan należy zachować na kliencie. Przedstawienie bezpaństwowców omówimy bardziej szczegółowo później.
Cacheable
Można zastosować ograniczenia pamięci podręcznej, umożliwiając w ten sposób oznaczenie danych odpowiedzi jako buforowalne lub nieobejmowalne. Wszelkie dane oznaczone jako buforowalne mogą być ponownie wykorzystane jako odpowiedź na to samo kolejne żądanie.
Jednolity interfejs
Wszystkie komponenty muszą współdziałać przez jeden jednolity interfejs. Ponieważ interakcja wszystkich komponentów odbywa się za pośrednictwem tego interfejsu, interakcja z różnymi usługami jest bardzo prosta. Interfejs jest taki sam! Oznacza to również, że zmiany wdrożeniowe można wprowadzać oddzielnie. Takie zmiany nie wpłyną na interakcję podstawowych komponentów, ponieważ jednolity interfejs jest zawsze niezmieniony. Jedną z wad jest to, że utknąłeś z interfejsem. Jeśli można by zapewnić optymalizację dla określonej usługi poprzez zmianę interfejsu, nie masz szczęścia, ponieważ REST tego zabrania. Z drugiej strony REST jest zoptymalizowany pod kątem sieci, stąd niesamowita popularność REST przez HTTP!
Powyższe koncepcje reprezentują definiowanie cech REST i odróżniają architekturę REST od innych architektur, takich jak usługi internetowe. Warto zauważyć, że usługa REST to usługa internetowa, ale usługa internetowa niekoniecznie jest usługą REST.
Zobacz ten wpis na blogu na temat zasad projektowania REST, aby uzyskać więcej informacji na temat REST i powyższych zasad.
To skrót od Representational State Transfer i może oznaczać wiele rzeczy, ale zwykle, gdy mówisz o API i aplikacjach, mówisz o REST jako sposobie świadczenia usług internetowych lub uzyskiwania programów do rozmów w sieci.
REST jest w zasadzie sposobem komunikacji między systemami i robi wiele z tego, do czego został zaprojektowany SOAP RPC, ale podczas gdy SOAP generalnie łączy się, uwierzytelnia, a następnie robi rzeczy przez to połączenie, REST działa prawie tak samo, jak działa sieć . Masz adres URL i kiedy prosisz o ten adres URL, otrzymasz coś z powrotem. W tym miejscu sprawy zaczynają się zagmatwać, ponieważ ludzie opisują sieć jako największą aplikację REST i chociaż jest to technicznie poprawne, tak naprawdę nie pomaga wyjaśnić, co to jest.
Krótko mówiąc, REST pozwala uzyskać rozmowę dwóch aplikacji przez Internet przy użyciu narzędzi podobnych do tych, których używa przeglądarka internetowa. Jest to znacznie prostsze niż SOAP, a wiele z tego, co robi REST, mówi: „Hej, rzeczy nie muszą być tak skomplikowane”.
REST to architektura oparta na ograniczeniach, SOAP to protokół, to są zupełnie inne rzeczy. Nie podoba mi się, gdy ludzie mówią o SOAP i REST w tej samej koncepcji, nic dziwnego, że ludzie są zdezorientowani.
Anders,
@Anders - Powiedział, że patrzy na REST API i myśli, że to sposób na wykorzystanie usług sieciowych. Możesz używać REST w ten sposób iw tym zakresie osiąga wiele z tego, co robi SOAP. Można również mówić o sieci jako największej na świecie aplikacji RESTful, ale to nie wyjaśnia, do czego użyjesz REST API.
Mark
To był mój główny problem, widząc REST i SOAP w tej samej koncepcji. Wygląda na to, że API są po prostu RESTful w projekcie.
Podstawową ideą jest to, że zamiast mieć ciągłe połączenie z serwerem, wysyłasz żądanie, pobierasz jakieś dane, pokazujesz to użytkownikowi, ale może nie wszystkie, a potem, gdy użytkownik robi coś, co wymaga większej ilości danych, lub aby przekazać część do serwera, klient inicjuje zmianę do nowego stanu.
Może to tylko ja, ale lubię widzieć odpowiednią odpowiedź na stackoverflow wraz z odpowiednim cytatem. Po prostu pociesz mnie i przypuśćmy, że wikipedia poszła poof. Co dobrego robi twój link, hmm? :)
Fake Code Monkey Rashid,
1
@Hack Saw: Czy nie powinno to być w twojej odpowiedzi?
Fałszywy kod Monkey Rashid,
Właśnie zauważyłem funkcję edycji. :)
Hack Saw
1
@karatedog: REST można osiągnąć za pomocą protokołu HTTP, ale można to zrobić różnymi metodami przesyłania danych.
Hack Saw
1
To jest protokół HTTP, o którym piszesz, REST to architektura.
Odpowiedzi:
REST nie jest określoną usługą internetową, ale koncepcją projektową (architekturą) do zarządzania informacjami o stanie. Przełomowym artykułem na ten temat była rozprawa Roya Thomasa Fieldinga (2000) „Architectural Styles and the Design of Network-based Software Architectures” ( dostępna online na Uniwersytecie Kalifornijskim w Irvine).
Najpierw przeczytaj post Ryana Tomayko. Jak wyjaśniłem REST mojej żonie ; to świetny punkt wyjścia. Następnie przeczytaj aktualną rozprawę Fieldinga. Nie jest tak zaawansowana, ani długa (sześć rozdziałów, 180 stron)! (Znam was, dzieciaki w szkole, lubicie krótkie).
EDYCJA: Wydaje mi się, że nie ma sensu próbować wyjaśniać REST. Ma tak wiele pojęć, jak skalowalność, widoczność (bezpaństwowość) itp., Które czytelnik musi zrozumieć, a najlepszym źródłem ich zrozumienia jest faktyczna rozprawa. To znacznie więcej niż POST / GET itp.
źródło
REST to wzorzec projektowania oprogramowania zwykle używany w aplikacjach internetowych. W kategoriach laika oznacza to, że jest to powszechnie stosowany pomysł, stosowany w wielu różnych projektach. To oznacza REpresentational State Transfer . Podstawową ideą REST jest traktowanie obiektów po stronie serwera (jak w wierszach w tabeli bazy danych) jako zasobów, które można utworzyć lub zniszczyć.
Najbardziej podstawowym sposobem myślenia o REST jest sposób formatowania adresów URL aplikacji internetowych. Na przykład, jeśli Twój zasób nazywał się „posty”, to:
/posts
Byłby to sposób, w jaki użytkownik uzyskałby dostęp do WSZYSTKICH postów do wyświetlenia./posts/:id
Byłby to sposób, w jaki użytkownik uzyskałby dostęp i przeglądał indywidualny post, pobrany na podstawie ich unikalnego identyfikatora./posts/new
Byłby to sposób wyświetlenia formularza do tworzenia nowego posta.Wysłanie żądania POST do
/users
byłoby w jaki sposób faktycznie utworzyłbyś nowy post na poziomie bazy danych.Wysłanie żądania PUT do
/users/:id
byłoby sposobem, w jaki zaktualizowałbyś atrybuty danego postu, ponownie identyfikowanego przez unikalny identyfikator.Wysłanie żądania DELETE do
/users/:id
byłoby sposobem, w jaki usunąłbyś dany post, ponownie identyfikowany przez unikalny identyfikator.Jak rozumiem, wzorzec REST został spopularyzowany (dla aplikacji internetowych) głównie przez framework Ruby on Rails, który kładzie duży nacisk na trasy RESTful. Chociaż mogę się co do tego mylić.
Może nie jestem najbardziej kompetentny, aby o tym mówić, ale tak się tego nauczyłem (szczególnie w przypadku programowania w Railsach).
Gdy ktoś odnosi się do „REST API”, ogólnie chodzi o interfejs API, który używa adresów URL RESTful do pobierania danych.
źródło
REST
to styl architektoniczny i projekt dla sieciowych architektur oprogramowania.REST
koncepcje nazywane są zasobami. Reprezentacja zasobu musi być bezstanowa. Jest reprezentowany przez pewien rodzaj mediów. Niektóre przykłady typów nośników należąXML
,JSON
iRDF
. Zasoby są manipulowane przez komponenty. Komponenty żądają zasobów i manipulują nimi za pośrednictwem standardowego, jednolitego interfejsu. W przypadku HTTP ten interfejs składa się ze standardowych ops HTTP, na przykładGET
,PUT
,POST
,DELETE
.REST
jest zwykle używanyHTTP
, głównie ze względu na prostotę protokołu HTTP i jego bardzo naturalne odwzorowanie na zasady RESTful. Jednak REST nie jest powiązany z żadnym określonym protokołem.Podstawowe zasady REST
Komunikacja klient-serwer
Architektury klient-serwer charakteryzują się bardzo wyraźnym rozdziałem problemów. Wszystkie aplikacje zbudowane w stylu RESTful muszą również być w zasadzie klient-serwer.
Bezpaństwowcy
Każde żądanie klienta skierowane do serwera wymaga pełnej reprezentacji jego stanu. Serwer musi być w stanie w pełni zrozumieć żądanie klienta bez korzystania z kontekstu serwera lub stanu sesji serwera. Wynika z tego, że cały stan należy zachować na kliencie. Przedstawienie bezpaństwowców omówimy bardziej szczegółowo później.
Cacheable
Można zastosować ograniczenia pamięci podręcznej, umożliwiając w ten sposób oznaczenie danych odpowiedzi jako buforowalne lub nieobejmowalne. Wszelkie dane oznaczone jako buforowalne mogą być ponownie wykorzystane jako odpowiedź na to samo kolejne żądanie.
Jednolity interfejs
Wszystkie komponenty muszą współdziałać przez jeden jednolity interfejs. Ponieważ interakcja wszystkich komponentów odbywa się za pośrednictwem tego interfejsu, interakcja z różnymi usługami jest bardzo prosta. Interfejs jest taki sam! Oznacza to również, że zmiany wdrożeniowe można wprowadzać oddzielnie. Takie zmiany nie wpłyną na interakcję podstawowych komponentów, ponieważ jednolity interfejs jest zawsze niezmieniony. Jedną z wad jest to, że utknąłeś z interfejsem. Jeśli można by zapewnić optymalizację dla określonej usługi poprzez zmianę interfejsu, nie masz szczęścia, ponieważ REST tego zabrania. Z drugiej strony REST jest zoptymalizowany pod kątem sieci, stąd niesamowita popularność REST przez HTTP!
Powyższe koncepcje reprezentują definiowanie cech REST i odróżniają architekturę REST od innych architektur, takich jak usługi internetowe. Warto zauważyć, że usługa REST to usługa internetowa, ale usługa internetowa niekoniecznie jest usługą REST.
Zobacz ten wpis na blogu na temat zasad projektowania REST, aby uzyskać więcej informacji na temat REST i powyższych zasad.
źródło
To skrót od Representational State Transfer i może oznaczać wiele rzeczy, ale zwykle, gdy mówisz o API i aplikacjach, mówisz o REST jako sposobie świadczenia usług internetowych lub uzyskiwania programów do rozmów w sieci.
REST jest w zasadzie sposobem komunikacji między systemami i robi wiele z tego, do czego został zaprojektowany SOAP RPC, ale podczas gdy SOAP generalnie łączy się, uwierzytelnia, a następnie robi rzeczy przez to połączenie, REST działa prawie tak samo, jak działa sieć . Masz adres URL i kiedy prosisz o ten adres URL, otrzymasz coś z powrotem. W tym miejscu sprawy zaczynają się zagmatwać, ponieważ ludzie opisują sieć jako największą aplikację REST i chociaż jest to technicznie poprawne, tak naprawdę nie pomaga wyjaśnić, co to jest.
Krótko mówiąc, REST pozwala uzyskać rozmowę dwóch aplikacji przez Internet przy użyciu narzędzi podobnych do tych, których używa przeglądarka internetowa. Jest to znacznie prostsze niż SOAP, a wiele z tego, co robi REST, mówi: „Hej, rzeczy nie muszą być tak skomplikowane”.
Warte przeczytania:
źródło
http://en.wikipedia.org/wiki/Representational_State_Transfer
Podstawową ideą jest to, że zamiast mieć ciągłe połączenie z serwerem, wysyłasz żądanie, pobierasz jakieś dane, pokazujesz to użytkownikowi, ale może nie wszystkie, a potem, gdy użytkownik robi coś, co wymaga większej ilości danych, lub aby przekazać część do serwera, klient inicjuje zmianę do nowego stanu.
źródło