Izgradnja web usluge REST način

Source page: http://xfront.com/REST-Web-Services.html

Roger L. Costello

Ja ću prvi dati kratki uvod za odmor, je zatim opisati kako izgraditi web usluge u REST Stilu.

Sto Je REST?

Ostalo JE pojam skovao Roy Fielding u doktoratu disertacija [1] za opisivanje arhitekture stil umreženim sustavima. REST je akronim stoji za reprezentativnu State Transfer.

Zašto se zove predstavljačkim stavu prijenos?

Web se sastoji od resursa. Resurs je bilo predmet interesa. Na primjer, Boeing Aircraft Corp môže definirati 747 resursa. Klijenti mogu pristupiti Taj Resurs s jsou ovim URL-om:

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

Je vrácena reprezentace zdroje (např., Boeing747.html). Zastoupení umístí klientské aplikace ve stavu. Výsledek klienta, která přechází na hypertextový odkaz v Boeing747.html je dalším zdrojem je přístupná. Nová reprezentace umístí klientské aplikace do dalšího stavu. To znamená, že klientská aplikace změny (převody) stát s každým zastoupením zdrojů -> prezentační státní převod!

Zde je Roy Fielding vysvětlení smyslu prezentační státní převod:

„Reprezentační přenos state je určen k evokují představu o tom, jak dobře navržené webové aplikace se chová: síť webových stránek (virtuální state-machine), kde se uživatel postupuje prostřednictvím aplikace výběrem článků (stav přechodů), což má za následek další stránku (reprezentující další stav aplikace), který je převeden na uživatele a vykreslení jejich použití.“

Motivace pro REST

Motivací pro zbytek byl zachytit vlastnosti webu, který podal Web úspěšný. Následně se tyto vlastnosti jsou používány jako vodítko pro vývoj webu.

REST – architektonický styl, není standardní

REST není standardní. Neuvidíte W3C hasí specifikaci odpočinku. Neuvidíte IBM nebo Microsoft nebo Sun prodává toolkit odpočinout vývojáře. Proč? Vzhledem k tomu, zbytek je jen architektonický styl. Nemůžete potlačit tento styl. Můžete pochopit jen a navrhnout své webové služby v tomto stylu. (Analogicky k klient-server architektury. Neexistuje žádná standardní klient-server).
Zatímco REST není standardní, to dělá použití normy:

  • HTTP
  • URL
  • XML / HTML / GIF / JPEG / etc (Resource zastoupení)
  • text / xml, text / html, obraz / gif, image / jpeg, etc (Typy MIME)

Klasický systém REST

Web je REST systém! Mnoho z těchto webových služeb, které jste používali před mnoha lety – book-objednávání služeb, vyhledávací služby, on-line slovníku služby, atd – jsou REST na bázi webových služeb. Bohužel, jste používali odpočinku, budování služeb REST a ani to vědět.

REST je zaměřen na „velký obraz“ webu. Nezabývá se implementačních detailů (např pomocí Java servlety nebo CGI implementovat webové služby). Takže pojďme se podívat na příklad vytvoření webové služby ze zbytku světa „velký obrázek“ perspektivy.

Díly Depot web service

Parts Depot, Inc (fiktivní společnost) nasadila některé webové služby, které umožňují jejím zákazníkům:

  • získat seznam dílů
  • získat podrobné informace o určité části
  • předložit objednávky (PO)

Uvažujme, jak každý z těchto služeb jsou realizovány na REST módu.

Získat kusovník

Webová služba zpřístupňuje URL zdroje se seznamem dílů. Například, klient by se použít tuto adresu URL získat seznam dílů:

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

Všimněte si, že „jak“ webová služba generuje přehled dílů je zcela transparentní pro klienta. All klient ví, je, že pokud on / ona předloží výše uvedenou adresu URL a pak se vrací dokument obsahující seznam částí. Vzhledem k tomu, realizace je transparentní pro klienty, Parts Depot je zatím upravit podkladové provádění tohoto zdroje bez dopadu na klienty. To je volné propojení.

Zde je dokument, který klient obdrží:

<?xml version="1.0"?>
<p:Parts xmlns:p="http://www.parts-depot.com" 
         xmlns:xlink="http://www.w3.org/1999/xlink">
      <Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/>
      <Part id="00346" xlink:href="http://www.parts-depot.com/parts/00346"/>
      <Part id="00347" xlink:href="http://www.parts-depot.com/parts/00347"/>
      <Part id="00348" xlink:href="http://www.parts-depot.com/parts/00348"/>
</p:Parts>

[Předpokládejme, že přes sjednání obsahu služba zjistila, že klient chce reprezentaci jako XML (pro zpracování machine-to-machine).] Všimněte si, že seznam dílů obsahuje odkazy lze získat podrobné informace o každé části. To je klíčovým prvkem odpočinku. Klientské převody z jednoho státu do dalšího posuzováním a výběrem z řad alternativních adres URL v dokumentu odezvy.

Získat podrobný datové části

Webová služba zpřístupňuje adresy URL pro každý zdroj dílů. Například, tady je návod, jak si klient vyžádá část 00345:

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

Zde je dokument, který klient obdrží:

<?xml version="1.0"?>
<p:Part xmlns:p="http://www.parts-depot.com"   
        xmlns:xlink="http://www.w3.org/1999/xlink">
      <Part-ID>00345</Part-ID>
      <Name>Widget-A</Name>
      <Description>This part is used within the frap assembly</Description>
      <Specification xlink:href="http://www.parts-depot.com/parts/00345/specification"/>
      <UnitCost currency="USD">0.10</UnitCost>
      <Quantity>10</Quantity>
</p:Part>

Opět pozorovat, jak se tato data souvisí s ještě více dat – specifikace pro tuto část lze nalézt pojížděním hypertextový odkaz. Každý dokument odezva umožňuje klientovi rolování pro získání podrobnějších informací.

Předloží PO

Webová služba zpřístupňuje URL předložit PO. Klient vytvoří instance dokumentu PO, která je v souladu s PO schématu, který Parts Depot je určen (a uveřejněný v dokumentu WSDL). Klient odešle PO.xml jako užitečné zatížení HTTP POST.

PO služba reaguje na HTTP POST s URL na předložené PO. To znamená, že klient může získat PO kdykoliv později (k aktualizaci / upravit jej). PO se stal kus informací, které jsou sdíleny mezi klientem a serverem. Sdílené informace (PO) je dána adresu (URL) prostřednictvím serveru a je vystaven jako webová služba.

Logické adresy URL oproti fyzických adres URL

Prostředek je koncepční entita. Reprezentace je konkrétním projevem zdroje. Tato adresa URL:

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

je logické URL, nikoli fyzický URL. Tak, tam nemusí být, například statické HTML stránky pro každou část. Ve skutečnosti, kdyby tam byl milion dílů pak milion statické HTML stránky by nemělo být velmi atraktivní design.

[Detail Realizace: Parts Depot mohl realizovat službu, která dostane podrobných údajů o určité části za použití Java Servlet, který analyzuje řetězec za názvem hostitele, používá číslo dílu vyhledávat v databázi dílů, formulovat výsledky dotazu ve formátu XML, a pak se vrátit XML jako vlastní data odpovědi HTTP.]

Jako věc stylu URL by neměla odhalit implementační techniku ​​používanou. Musíte mít možnost měnit implementaci bez dopadu na klienty nebo mít zavádějící adresy.

REST web services charakteristika

Zde jsou vlastnosti REST:

  • Client-Server: pull-based interakce style: náročné součásti vytáhnout reprezentace.
  • Stateless: každý požadavek od klienta na server, musí obsahovat všechny informace potřebné k pochopení žádosti, a nemohou využít pro jakýkoliv uložený kontextu na serveru.
  • Cache: zlepšení odezvy síťových účinnost musí být schopna označeny jako cacheable nebo non-cacheable.
  • Jednotný interface: všechny zdroje jsou přístupné pomocí generické rozhraní (například HTTP GET, POST, PUT, DELETE).
  • Pojmenované zdroje – systém se skládá ze zdrojů, které jsou pojmenovány pomocí adresy URL.
  • Propojené reprezentace zdroje – reprezentace zdroje jsou propojeny pomocí adresy URL, což umožňuje klientovi postupovat od jednoho státu do druhého.
  • Vrstvené komponenty – zprostředkovatelé, jako jsou servery proxy vyrovnávacích serverů, bran apod, mohou být vloženy mezi klienty a zdrojů na podporu výkonu, bezpečnosti, atd.

Principy REST design webové služby

1. Klíčem k vytvoření webové služby REST sítě (to znamená, že Web) je identifikovat všechny koncepčních entit, které chcete vystavit jako služby. Výše jsme viděli některé příklady prostředků: seznam dílů, detailní datovou část, objednávky.

2. Vytvořte URL každého zdroje. Tyto prostředky by měly být podstatná jména, slovesa ne. Například nepoužívejte následující:

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

Všimněte si, sloveso, getPart. Místo toho použijte podstatné jméno:

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

3. Kategorizace zdrojů podle toho, zda klienti mohou jen přijmout reprezentace zdroje, nebo zda mohou klienti upravovat (přidat) zdroj. Pro bývalý, aby tyto zdroje přístupné pomocí HTTP GET. Pro později, aby tyto zdroje přístupné pomocí HTTP POST, PUT, a / nebo DELETE.

4. Všechny zdroje přístupné přes HTTP GET by měl být vedlejším účinkem zdarma. To znamená, že zdroj by měl prostě vrátit reprezentace zdroje. S odvoláním na zdroje by neměla vést ke změně zdroje.

5. Žádný muž / žena je ostrov. Stejně tak není zastoupení by mělo být ostrov. Jinými slovy, dát hypertextové odkazy v rámci reprezentace zdrojů umožnit klientům přejít na nižší úroveň pro více informací a / nebo získat související informace.

6. Konstrukce k odhalení dat postupně. Neukazují vše v jediném dokumentu odezvy. Poskytnout hypertextové odkazy pro získání více informací.

7. Určete formát dat odpovědí s použitím schématu (DTD, W3C Schema, RelaxNG nebo Schematron). Pro ty služby, které vyžadují POST nebo dát k němu také poskytnout schéma pro určení formátu odpovědi.

8. Popište, jak jsou vaše služby, které mají být vyvolán buď pomocí dokument WSDL, nebo jednoduše dokument HTML.

Souhrn

Tento článek je popsáno REST jako architektonický styl. Ve skutečnosti je to architektonický styl na webu. REST popisuje, co dělá web dobře fungovat. Dodržování zásad zbytek bude vaše služby dobře fungovat v rámci webu.

V budoucnu článku budu psát o vývoji webu s využitím principů REST.

Potvrzení

Díky Robert Leftwich a Philip Eskelin za jejich velmi cenné připomínky při tvorbě tohoto dokumentu.

Reference

[1] http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm