Przyjąłem założenie, że REST to usługa internetowa, ale wydaje mi się, że tak myślę - więc czym jest REST?
Przeczytałem Wikipedię, ale nadal nie mogę się nad tym zastanowić. Dlaczego w wielu miejscach interfejsy API są określane jako REST API?
Przyjąłem założenie, że REST to usługa internetowa, ale wydaje mi się, że tak myślę - więc czym jest REST?
Przeczytałem Wikipedię, ale nadal nie mogę się nad tym zastanowić. Dlaczego w wielu miejscach interfejsy API są określane jako REST API?
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.
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.
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.
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”.
Warte przeczytania:
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.