Cóż, istnieje wiele sposobów na nauczenie się, jak zbudować aplikację internetową RESTful i nie, nie ma wyjątkowej właściwej metody. RESTful nie jest standardem, ale wykorzystuje zestaw standardów (HTTP, URI, Mime Type, ...).
Zacznij od tego: Jak wyjaśniłem REST mojej żonie
Następnie wykonaj następujące czynności: RESTful Web Services Cookbook
A potem włóż cały swój wysiłek w tworzenie aplikacji internetowych, ponieważ najlepszym sposobem na naukę jest przeprowadzanie eksperymentów i możesz wiele nauczyć się na własnych błędach;)
Nie martw się, jeśli Twoje pierwsze aplikacje internetowe nie będą całkowicie ODPOCZYNEK: znajdziesz sposób, aby to zrobić!
Cytując Obi-Wana Kenobiego, „niech moc będzie z tobą!” ;)
EDYTOWAĆ
Ok, pozwól mi być bardziej konkretny.
Chcesz stworzyć RESTful webapp, co? Cóż, jak powiedziałem, istnieje wiele sposobów, aby to zrobić, ale jest to główna wskazówka.
Definicja
REST (Representational State Transfer) to styl architektury oprogramowania dla systemu rozproszonego (np. WWW). Nie jest to standard, ale wykorzystuje zestaw standardów: HTTP, AJAX, HTML, URI, Mime Type itp. Mówimy o reprezentacji zasobu, a nie o samym zasobie. Zaczerpnięte z „Jak wyjaśniłem REST mojej żonie”:
Żona : strona internetowa jest zasobem?
Ryan : W pewnym sensie. Strona internetowa jest reprezentacją zasobu. Zasoby to tylko koncepcje.
Ograniczenia architektury
- Klient-serwer : klient i serwer są oddzielone przez jednolity interfejs (opisany poniżej).
- Bezstanowy : komunikacja serwer-klient odbywa się bez zapisywania określonego stanu klienta na serwerze.
- Możliwe do buforowania : klient może mieć już bufor odpowiedzi na złożone żądania.
- System warstwowy : klient nie wie, czy jest bezpośrednio połączony z serwerem końcowym, czy też komunikacja odbywa się za pośrednictwem pośredników.
Jednolity interfejs
- Identyfikacja zasobów: każdy zasób musi być identyfikowany przez URI.
- Protokół : aby uzyskać komunikację między klientem a serwerem, należy wcześniej wykonać protokół. Każde żądanie może mieć odpowiedni typ MIME (application / xml, text / html, application / rdf + xml itp.), Odpowiednie nagłówki i odpowiednią metodę HTTP (patrz opis CRUD poniżej).
CRUD
Ok, widzieliśmy, że do identyfikacji zasobów możemy użyć URI, ale potrzebujemy czegoś innego do akcji (dodawania, modyfikowania, usuwania itp.): Wielkie powitanie w CRUD (tworzenie, czytanie, aktualizowanie i usuwanie).
- Utwórz { HTTP: POST } { SQL: INSERT } => utwórz nowy zasób
- Przeczytaj { HTTP: GET } { SQL: SELECT } => zdobądź zasób
- Zaktualizuj { HTTP: PUT } { SQL: UPDATE } => zmodyfikuj zasób
- Usuń { HTTP: DELETE } { SQL: DELETE } => usuń zasób
Teraz, jeśli chodzi o PUT i DELETE, mogą pojawić się pewne problemy techniczne (dostaniesz je w formularzu HTML): często programiści omijają ten problem za pomocą POST dla każdego żądania „PUT” i „DELETE”. Oficjalnie musisz użyć PUT i DELETE. Nawiasem mówiąc, rób, co chcesz. Moje doświadczenie zmusza mnie do korzystania z POST i GET za każdym razem.
--- Należy użyć następnej części, ale nie jest to więź REST: dotyczy ona danych powiązanych ---
URI
Streszczenie URI ze szczegółów technicznych! Pożegnaj się z URI w następujący sposób:
http://www.example.com/index.php?query=search&id=9823&date=08272012
Ponowne zaprojektowanie URI! Wybierz powyższy link i zmień go w następujący sposób:
http://www.example.com/search/2012/08/27/9823
To o wiele lepsze, prawda? Można to zrobić przez:
Kolejna rzecz: użyj innego identyfikatora URI do reprezentowania różnych zasobów:
Uwaga : about.html i about.rdf nie są plikami! Mogą być wynikiem transformacji XSLT!
Negocjacje treści
Jeśli osiągnąłeś ten punkt, gratulacje! Prawdopodobnie jesteś gotowy, aby uzyskać więcej abstrakcyjnych koncepcji, ponieważ wchodzimy w szczegóły techniczne Semantic Web;) Cóż, gdy twój klient chce zasobu, zwykle wysyła następujące żądanie:
GET http://www.example.com/about
Accept: application/rdf+xml
Ale serwer nie odpowie na about.rdf, ponieważ ma inny identyfikator URI ( http://www.example.com/about.rdf ). Spójrzmy więc na wzór 303 ! Serwer zwróci to:
303 See Other
Location: http://www.example.com/about.rdf
Klient podąży za linkiem zwróconym w następujący sposób:
GET http://www.example.com/about.rdf
Accept: application/rdf+xml
Na koniec serwer zwróci żądany zasób:
200 OK
about.rdf
Nie martw się: aplikacja kliencka nic z tego nie zrobi! Wzorzec 303 musi zostać wykonany przez aplikację serwera, a przeglądarka zajmie się resztą;)
Wniosek
Często teoria jest daleka od praktyki. Tak, teraz już wiesz, jak zaprojektować i opracować aplikację RESTful, ale powyższa wskazówka to tylko wskazówka. Znajdziesz najlepszy sposób na budowanie aplikacji internetowych i prawdopodobnie nie będzie to to, czego chce teoria. Nie przejmuj się: D!
Bibliografia
RESTful Web Services, Sameer Tyagi
Interfejsy API REST muszą być sterowane hipertekstem, Roy Thomas Fielding
Usługi RESTful Web: podstawy, Alex Rodriguez
Przepływ pracy REST Webbera