Budowlane Usługi Sieciowe REST Droga

This is the translation. The original web-page (oryginalna strona): http://xfront.com/REST-Web-Services.html

Roger L. Costello

Ja najpierw podać krótkie wprowadzenie do odpoczynku, a następnie opisać, jak zbudować usług internetowych w stylu REST.

Czym jest REST?

Reszta to termin ukuty przez Roy Fielding jego Ph.D. Rozprawa [1], aby opisać styl architektury systemów sieciowych. REST jest akronimem stoi Transferu Representational państwa.

Dlaczego to się nazywa Representational State Transfer?

Sieć składa się z zasobami. Zasób jest każdy przedmiot zainteresowania. Na przykład, Boeing Aircraft Corp może wyznaczać 747 zasobu. Klienci mogą uzyskać dostęp do zasobów z tego adresu URL:

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

Przedstawienie zasobu jest zwracana (np Boeing747.html). Reprezentacja umieszcza aplikację kliencką w stanie. Wynikiem klienta przechodzącego hiperłącze w Boeing747.html jest inny zasób jest dostępny. Nowa reprezentacja umieszcza aplikację kliencką do kolejnego stanu.Zatem zmiany aplikacji klienckiej (przelew e) stan każdej z reprezentacji zasobów -> Representational State Transfer! Oto wyjaśnienie Roy Fielding znaczenia Representational State Transfer:„Representational State Transfer ma na celu wywołać obraz tego, jak dobrze zaprojektowana aplikacja internetowa zachowuje: sieć stron internetowych (wirtualny stan automatyczna), gdzie użytkownik przechodzi przez aplikację wybierając Linki (przejścia między stanami), w wyniku czego następna strona (reprezentujący następny stan aplikacji) są przesyłane do użytkownika i świadczonych dla ich stosowania.”

Motywacja do odpoczynku

Motywacja do odpoczynku było uchwycić cechy charakterystyczne sieci Web, który wydał udany. Następnie cechy te są wykorzystywane do prowadzenia ewolucję sieci.

Reszta – styl architektoniczny, a nie standardowe

Reszta nie jest standardem. Nie będzie widać W3C gasił specyfikację REST. Nie będzie widać IBM czy Microsoft lub Sun sprzedaży zestaw narzędzi odpocząć dewelopera. Czemu? Ponieważ Reszta to tylko styl architektoniczny. Nie można butelkować ten styl. Można tylko zrozumieć go i zaprojektować swoje usługi internetowe w tym stylu. (Analogicznie do klient-serwer stylu Nie ma standardowy klient-serwer). Podczas gdy reszta nie jest standardem, to jednak standardy użytkowania:

  • HTTP
  • URL
  • XML/HTML/GIF/JPEG/etc (resource Reprezentacje)
  • text/xml, text/html, image/gif, image/jpeg, etc (Typy MIME)

Klasyczny system REST

Sieć jest system resztę! Wiele z tych usług internetowych, które zostały z wykorzystaniem tych wielu lat – Usługi book-zamawianiu usług wyszukiwania, usługi on-line słownik, itp – są oparte na REST Web Services. Niestety, był używany odpoczynek, budowa usługi REST, a ty nawet nie wiedzą. REST zajmuje się „duży obraz” w internecie. To nie dotyczy szczegółów implementacji (na przykład za pomocą apletów Java lub CGI w celu realizacji usługi sieci Web).Więc spójrzmy na przykład tworząc usługę internetową od reszty „Duży obraz” perspektywy.

Parts Depot Web Services

Parts Depot, Inc (fikcyjna firma) wdrożył niektórych usług internetowych, aby umożliwić swoim klientom:

  • uzyskać listę części
  • uzyskać szczegółowe informacje na temat określonej części
  • złożenia Zamówienia (PO)

Rozważmy, jak każda z tych usług są realizowane w spokojnej mody.

Uzyskaj Lista części

Usługa internetowa sprawia, że ​​dostępne URL do zasobu listy części. Na przykład, klient będzie używać tego adresu, aby otrzymać listę części:

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

Zauważ, że „jak” usługa internetowa generuje listę części jest całkowicie przezroczysty dla klienta. Wszyscy wiedzą, że klient jest jeśli on/ona uważa, powyższy adres URL, a następnie dokument zawierający listę części jest zwracana. Ponieważ realizacja jest przezroczysty dla klientów, Parts Depot może swobodnie modyfikować z podstawowym zastosowaniem tego zasobu bez wpływu na klientów. Jest to luźna sprzęgła. Oto dokument, który klient otrzymuje:

<? Xml version = "1.0"?>
<P: Części xmlns: p = "http://www.parts-depot.com" 
         xmlns: xlink = "http://www.w3.org/1999/xlink">
      <Id część = "00345" xlink: sekcję "http://www.parts-depot.com/parts/00345" />
      <Id część = "00346" xlink: sekcję "http://www.parts-depot.com/parts/00346" />
      <Id część = "00347" xlink: sekcję "http://www.parts-depot.com/parts/00347" />
      <Id część = "00348" xlink: sekcję "http://www.parts-depot.com/parts/00348" />
</ P: Części>

[Załóżmy, że w drodze negocjacji zawartości usługi ustalono, że klient chce reprezentację w formacie XML (dla machine-to-machine przetwarzania).] Należy zauważyć, że lista części zawiera linki, aby uzyskać szczegółowe informacje o każdej z części. Jest kluczowym elementem odpoczynku. Transfery klienta z jednego stanu do następnego analizując i wybierając spośród alternatywnych adresów URL w dokumencie odpowiedzi.

Uzyskać szczegółowe dane część

Usługa internetowa sprawia, że ​​dostępne adres URL do każdego zasobu części. Przykład, oto jak klient żąda część 00345:

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

Oto dokument, który klient otrzymuje:

<? Xml version = "1.0"?>
<P: xmlns część: p = "http://www.parts-depot.com"   
        xmlns: xlink = "http://www.w3.org/1999/xlink">
      <Część-ID> 00345 </ ID>
      <Nazwa> Widget-A </ name>
      <Opis> ta część jest wykorzystywana w zespole FRAP </ opis>
      <Specyfikacja xlink: href = "http://www.parts-depot.com/parts/00345/specification" />
      <UnitCost waluta = "USD"> 0.10 </ UnitCost>
      <Ilości <10 </ ilość>
</ P: Część>

Ponownie obserwować w jaki sposób dane te są związane z jeszcze więcej danych – specyfikacja dla tej części można znaleźć przez przejeżdżające hiperłącze. Każdy dokument Odpowiedź pozwala klientowi drążyć, aby uzyskać bardziej szczegółowe informacje.

Prześlij PO

Usługa internetowa sprawia, że ​​dostępne URL złożyć PO. Klient tworzy instancję dokumentu PO zgodnego ze schematem PO że Parts Depot został zaprojektowany (i nagłośnione w dokumencie WSDL). Klient twierdzi PO.xml jako ładunek HTTP POST.

Usługa PO odpowiada na HTTP POST z URL do przedłożonego PO. W ten sposób klient może odzyskać PO dowolnym późniejszym czasie (do aktualizacji/edytować). PO stała się informacja, która jest dzielona między klientem a serwerem. Wspólna informacja (PO) jest podany adres (URL) przez serwer i jest narażony jako usługa sieci Web.

Logika adresy URL kontra Fizycznych

Zasób jest koncepcyjnym podmiot. Przedstawienie jest konkretnym przejawem zasobu. Ten adres URL:

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

jest logicznym URL, a nie fizyczny URL. Tak więc, nie ma potrzeby, aby być, na przykład, statyczne strony HTML dla 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: Parts Depot może wdrożyć usługę, która pobiera szczegółowe dane o konkretnej części poprzez zastosowanie Java Servlet który analizuje ciąg po nazwie hosta, wykorzystuje numer części do kwerendy bazy danych artykułów, formułowania wyników zapytania jak XML i następnie powrócić XML jako ładunek odpowiedzi HTTP.] Co do adresów URL typu nie powinny ujawnić technikę realizacji używany. Trzeba być swobodnie zmienić implementację bez wpływu na klientów lub posiadające mylące URL.

REST Usługi Internetowe Charakterystyka

Oto charakterystyka REST:

  • Klient-serwer: pull oparte styl interakcja: elementy zużywające ciągnąć reprezentacje.
  • Bezpaństwowcem: każde żądanie od klienta do serwera musi zawierać wszystkie informacje niezbędne do zrozumienia wniosek, i nie może skorzystać z jakiegokolwiek kontekstu przechowywanych na serwerze.
  • Cache: poprawa efektywności sieci reakcje muszą być zdolne oznaczone jako Cacheable lub braku Cacheable.
  • Jednolity interfejs: wszystkie zasoby są dostępne z rodzajowego interfejsu (na przykład HTTP GET, POST, PUT, DELETE).
  • Nazwane zasoby – system składa się z zasobów, które są nazwane przy użyciu adresu URL.
  • Połączonych ze sobą reprezentacje zasobów – reprezentacje tych zasobów są połączone ze sobą za pomocą adresów URL, umożliwiając klientowi w celu przejścia od jednego stanu do drugiego.
  • Warstwowe elementy – pośredników, takich jak serwery proxy, serwery z pamięcią podręczną, bramy, itp, można włożyć między klientami i zasobów, aby wspierać wydajność, bezpieczeństwo, itp

Zasady REST Serwis internetowy projekt

1. Kluczem do tworzenia Web Services w sieci REST (tj Web) jest zidentyfikowanie wszystkich koncepcyjnych podmiotów, które chcą wystawiać jako usługi. Powyżej widzieliśmy kilka przykładów: lista części zasobów, szczegółowe dane części, zamówienie zakupu. 2. Utwórz URL do każdego zasobu. Środki powinny być rzeczowniki, czasowniki nie. Na przykład, nie należy korzystać z tego:

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

Uwaga czasownika, getPart. Zamiast używać rzeczownika:

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

3. Kategoryzuj swoje zasoby w zależności od tego, czy klienci mogą tylko otrzymać reprezentację zasobu, czy klienci mogą modyfikować (dodawać do) zasób. Dla tych pierwszych, by te zasoby dostępne za pomocą HTTP GET. Na później, by te zasoby dostępne za pomocą HTTP POST, PUT i/lub usunąć. 4. Wszystkie zasoby dostępne poprzez HTTP GET powinna być efektem ubocznym darmo. Oznacza to, że zasób powinien po prostu wrócić do reprezentacji zasobu. Wywoływanie zasobu nie powinna spowodować modyfikację zasobu. 5. Żaden mężczyzna/kobieta jest wyspą. Podobnie, nie reprezentacja powinna być wyspą.Innymi słowy, umieścić hiperłącza w ciągu reprezentacji zasobów w celu umożliwienia klientom drążyć aby uzyskać więcej informacji i/lub w celu uzyskania informacji związanych.6. Projekt ujawnić dane stopniowo. Nie ujawniają wszystko w jednym dokumencie odpowiedzi. Zapewnić hiperłącza do uzyskania więcej szczegółów. 7. Określ format danych odpowiedzi z wykorzystaniem schematu (DTD, W3C Schema, RelaxNG lub Schematron). Dla tych usług, które wymagają stanowiska lub umieścić na niej również schemat aby określić format odpowiedzi. 8. Opisać w jaki sposób usługi mają być wywoływane przy użyciu dokumentu WSDL, lub po prostu dokument HTML.

Podsumowanie

W tym artykule opisano REST jako stylu architektonicznego. W rzeczywistości, to jest styl architektoniczny w sieci. REST opisuje to, co sprawia, że Web działa dobrze. Przestrzeganie zasad reszta będzie dokonać usługi działają dobrze w kontekście sieci. W kolejnym artykule będę pisać o ewolucji sieci WWW przy użyciu zasad resztę.

Potwierdzenie

Dzięki Robert Leftwich i Philip Eskelin dla ich bardzo pomocne komentarze w tworzeniu tego dokumentu.