Budowania usługami sieci Web Drogę odpoczynek


Original: http://www.xfront.com/REST-Web-Services.html

Roger L. Costello

Ja najpierw przedstawić krótkie wprowadzenie do REST, a następnie opisać, jak zbudować usług sieci Web REST w stylu.
Czym jest REST?
REST to termin ukuty przez Roy Fielding w doktora praca [1] do opisania stylu architektury systemów sieciowych. REST jest skrót od Representational State Transfer.
Dlaczego nazywamy to Representational State Transfer?
Sieć składa się z zasobów. Zasobów jest każdy przedmiot zainteresowania. Na przykład, może Corp samolotu Boeing 747 określenia zasobu. Klienci mogą uzyskać dostęp do zasobów z tego adresu:

http://www.boeing.com/aircraft/747

Reprezentacja zasób jest zwracany (np. Boeing747.html). Reprezentacja umieszcza aplikację kliencką w państwie. Wynik klienta przechodzącego hiperłącza w Boeing747.html jest inny zasób jest dostępny. Nowa reprezentacja umieszcza aplikację kliencką w kolejny stan. Zatem zmiany aplikacji klienckiej (transfery) państwowe z każdym reprezentacji zasobów -> Representational State Transfer!

Oto wyjaśnienie Roy Fielding znaczenia Representational State Transfer:

“Representational State Transfer jest przeznaczony do wywoływania obrazu, jak dobrze zaprojektowana aplikacja internetowa zachowuje: sieć stron internetowych (wirtualne państwo-machine), gdzie użytkownik przechodzi przez aplikację wybierając łącza (przejścia państwa), w wyniku czego następna strona (reprezentujących kolejną stan aplikacji) są przenoszone na użytkownika i świadczonych dla nich. ”
Motywacja do odpoczynku
Motywacja do odpoczynku było ujęcie charakterystyki sieci, który wydał Web udany. Następnie te cechy są wykorzystywane do prowadzenia ewolucji sieci.
REST – styl architektoniczny, a nie standard
Reszta nie norma. Nie zobaczysz W3C gasił specyfikację REST. Nie zobaczysz IBM czy Microsoft czy Sun sprzedaje deweloper resztę jego narzędzi. Dlaczego? Bo reszta to tylko styl architektoniczny. Nie można butelkować tego stylu. Można tylko ją zrozumieć, i projektowania usług sieci Web w tym stylu. (Analogicznie do klient-serwer stylu. Brak jest klient-serwer standard.)

Podczas gdy reszta nie jest standard, to korzysta z normy:

  • HTTP
  • URL
  • XML / HTML / GIF / JPEG / etc (Reprezentacje zasobów)
  • text / xml, text / html, image / gif, image / jpeg, itp (typy MIME)

Klasyczny system REST
Web to system REST! Wiele z tych usług sieci Web, które zostały z wykorzystaniem tych wielu lat – book-Zamawianie usług, usługi wyszukiwania, serwisy online, słownik, itp. – są REST usługi sieci Web. Niestety, gdy pacjent stosuje REST, budowanie usług REST i nawet nie wiedzieć.

REST dotyczy “całego obrazu” z sieci. To nie zajmuje się szczegółami implementacji (np. przy użyciu serwletów Java lub CGI wdrożyć serwis WWW). Więc spójrzmy na przykład tworzenie usługi WWW z odpoczynku “big picture” perspektywy.
Części Depot Web Services
Części Depot, Inc (fikcyjne firmy) wdrożył niektórych usług internetowych, aby umożliwić swoim klientom:

  • otrzymać listę części
  • uzyskać szczegółowe informacje na temat poszczególnych części
  • złożyć zamówienia (PO)

Rozważmy, jak każda z tych usług są realizowane w sposób spokojny.
Pobierz listę części
Serwis internetowy udostępni adres URL do listy części zasobu. Na przykład, klient będzie korzystać z tego adresu, aby otrzymać listę części:

http://www.parts-depot.com/parts

Zauważ, że “jak” serwis internetowy generuje listę części jest całkowicie przezroczysty dla klienta. Wszystko klient wie, że jeśli on / ona uważa powyższy URL następnie dokument zawierający wykaz części jest zwracana. Ponieważ realizacja jest przezroczysty dla klientów Depot Części jest swobodnie modyfikować samej realizacji tego zasobu, bez wpływu na klientów. Jest to luźna sprzęgła.

Oto dokument, który klient otrzymuje:
http://www.w3.org/1999/xlink

[Załóżmy, że w wyniku negocjacji zawartości serwis ustalił, że klient chce reprezentację w formacie XML (dla machine-to-machine przetwarzania).] Zauważ, że lista części zawiera łącza, aby uzyskać szczegółowe informacje o każdej części. To jest kluczowa cecha REST. Klient przenosi z jednego stanu do drugiego, analizując i wybierając spośród alternatywnych adresów URL w dokumencie odpowiedzi.
Szczegółowe dane dotyczące składników
Serwis internetowy udostępni adres URL do każdego zasobu części. Przykład, oto jak klient żąda 00345 część:

http://www.parts-depot.com/parts/00345

Oto dokument, który klient otrzymuje:

http://www.w3.org/1999/xlink

00345
Widget-
Ta część jest używana w zespole FRAP
Xlink:href=”http://www.parts-depot.com/parts/00345/specification”/> 0,10
10
Część

Ponownie obserwujemy, jak dane te są związane z jeszcze większej ilości danych – specyfikacja dla tej części można znaleźć przemierzając hiperłącze. Każdy dokument odpowiedź pozwala klientowi drążyć, aby uzyskać bardziej szczegółowe informacje.
Prześlij PO
Serwis internetowy udostępni URL do przedłożenia PO. Klient tworzy PO dokumentu instancji, który jest zgodny ze schematem, że PO Części Depot zaprojektował (i opublikowane w dokumencie WSDL). Klient twierdzi PO.xml jako ładunek na HTTP POST.

Usługa PO odpowiada na HTTP POST z URL do przedstawionych PO. Tak więc klient może odebrać PO jakimkolwiek późniejszym terminie (do aktualizacji / edycji). PO stała się informacja, która jest dzielona pomiędzy klientem a serwerem. Udostępniane informacje (PO) jest podany adres (URL) przez serwer i jest widoczne jako usługi sieci Web.
Logika kontra Fizycznego adresów URL
Zasobów jest koncepcyjny podmiot. Reprezentacja jest konkretnym przejawem zasobu. Ten adres URL:

http://www.parts-depot.com/parts/00345

jest logiczną URL nie fizyczną URL. Tak więc, nie musi być, na przykład, statyczne HTML strona każdej części. W rzeczywistości, gdyby nie było milion części wówczas milion statycznych stron HTML nie byłby bardzo atrakcyjny design.

[Szczegół realizacji: Depot Części mogłaby wdrożyć usługę która pobiera szczegółowe dane na temat danej części przez zastosowanie serwletu Java, który analizuje ciąg po nazwie hosta, korzysta numer części do przeszukiwania bazy danych części, formułowania wyników zapytania w formacie XML, a następnie powrócić XML jako ładunek odpowiedzi HTTP.]

W gruncie adresów stylu nie powinny ujawniać zastosowanej techniki realizacji. Musisz być wolne, aby zmienić życie bez wpływu na klientów lub o mylącej URL.
Usługi REST Charakterystyka sieci

Oto cechy REST:

Client-Server: pull-style oparte interakcja: zużywa składniki wyciągnąć reprezentacje.
Stateless: każdy wniosek od klienta do serwera musi zawierać wszystkie informacje niezbędne do zrozumienia wniosek, i nie może skorzystać z dowolnej zapisanej kontekście na serwerze.
Cache: poprawić odpowiedzi efektywności sieci musi być w stanie oznakować go jako Cacheable lub nie Cacheable.
Jednolity interfejs: wszystkie zasoby są dostępne z ogólnego interfejsu (np. HTTP GET, POST, PUT, DELETE).
Nazwany zasobów – System składa się z zasobów, które są nazywane za pomocą adresu URL.
Połączonych zasobów reprezentacje – reprezentacje zasobów są ze sobą połączone za pomocą adresów URL, co umożliwia klientowi w celu przejścia od jednego stanu do drugiego.
Warstwowe elementy – pośredników, takich jak serwery proxy, serwery pamięci podręcznej, bram, itp., można włożyć między klientami i zasobów w celu wspierania wydajności, bezpieczeństwa, itp.

Zasady usługi REST Web Design
1. Kluczem do stworzenia usług sieci Web w sieci, reszta (czyli Web) jest zidentyfikowanie wszystkich pojęciowych podmiotów, które chcą wystawiać jako usługi. Powyżej widzieliśmy przykłady zasobów: lista części, szczegółowe dane dotyczące strony, zamówienia.

2. Tworzenie adresów URL do każdego zasobu. Zasoby powinny być rzeczowniki, czasowniki nie. Na przykład, nie należy używać tego:

http://www.parts-depot.com/parts/getPart?id=00345

Zwróć uwagę na czasownik, getPart. Zamiast tego należy użyć rzeczownika:

http://www.parts-depot.com/parts/00345

3. Kategoryzować swoje zasoby do tego, czy klienci mogą po prostu otrzymać reprezentację zasobu, czy klienci mogą modyfikować (dodać do) zasobów. Dla pierwszego, aby te zasoby dostępne przy użyciu HTTP GET. Na później, aby te zasoby dostępne przez HTTP POST, PUT, oraz / lub DELETE.

4. Wszystkie zasoby dostępne przez HTTP GET powinna być efektem ubocznym darmo. Oznacza to, że zasób powinien po prostu wrócić reprezentację zasobu. Wywoływanie zasób nie powinien powodować zmiany zasobu.

5. Żaden mężczyzna / kobieta jest wyspą. Podobnie nie powinno być przedstawienie wyspa. Innymi słowy, w ramach reprezentacji umieścić hiperłącza zasobów umożliwiające klientom drążyć więcej informacji, i / lub w celu uzyskania odpowiednich informacji.

6. Zaprojektuj ujawnić dane stopniowo. Nie ujawniają wszystkiego w jednym dokumencie odpowiedzi. Przekaż hiperłącza do uzyskania większej liczby szczegółów.

7. Określić format danych odpowiedzi za pomocą schematu (DTD, W3C Schema, RelaxNG lub Schematron). W odniesieniu do tych usług, które wymagają POST lub PUT do niego, również schemat, aby określić format odpowiedzi.

8. Opisz, w jaki usługi są powoływane przy użyciu dokumentu WSDL, lub po prostu w dokumencie HTML.
Streszczenie
W tym artykule opisano REST jako stylu architektonicznego. W rzeczywistości, to jest styl architektoniczny w sieci. REST opisuje, co sprawia, że ​​praca w sieci Web dobrze. Przestrzeganiu zasad REST będzie Twoje usługi działają dobrze w ramach sieci.

W kolejnym artykule będę pisać o ewolucji sieci WWW przy użyciu zasad REST.

Podziękowanie
Dzięki Robert Leftwich i Philipa Eskelin dla ich bardzo pomocne uwagi w tworzeniu tego dokumentu.
Tłumaczenia tego artykułu
Jason Fragoso przetłumaczony artykuł w języku białoruskim: http://www.movavi.com/opensource/REST-web-services-be
Referencje

[1] http://www.ics.uci.edu/ ~ Fielding / puby / praca dyplomowa / top.htm