Hoone Veeb Teenused REST Viis

Ma kõigepealt anda lühike sissejuhatus REST (Representational State Transfer- Tutvustavate Riigi Üleandmine) ja siis kirjeldada, kuidas luua Web services REST stiilis.

Millised on REST?

REST on mõiste mõtles välja Roy Fielding oma doktorikraadi väitekirja [1] kirjeldada arhitektuuri stiil ühendatud süsteemid. REST on lühend seisma (Representational State Transfer- Tutvustavate Riigi Üleandmine).

Miks on selle nimi Tutvustavate Riigi Edastada?

Veeb koosneb ressursse. Ressurss on iga punkt huvi. Näiteks Boeing Õhusõiduki Aktsiaselts võib kindlaks 747 ressurss. Kliendid võivad kasutada, et ressurss selle URL:

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

Esindatuse ressurss on tagasi (nt, Boeing747.html). Esindus paneb klient on taotluse esitanud riik. Tulemus kliendi liiklevad hüperlinki Boeing747.html on veel üks ressurss on kättesaadav. Uus esindus paneb kliendi avalduse arvesse veel teine riik. Seega, klient rakendus muudab (siirded) riigi iga ressursi esindus –> REST!

Siin on Roy Fielding on selgitus tähenduses Tutvustavate Riigi Ülekanne:

“Tutvustavate Riigi Edastamine on ette nähtud, et äratada pilt, kuidas hästi läbi mõeldud veebirakendus käitub: võrgustiku veebilehed (virtuaalse riigi-masin), kus kasutaja liigub rakenduse kaudu, valides lingid (riigi siirded), mille tulemuseks on järgmisel leheküljel (esindab järgmise riigi taotluse) on üle kasutaja ja sulatatud nende kasutamiseks.”

Motivatsiooni REST

Motivatsiooni REST oli lüüa omadused Web, mis tegi Web edukas. Hiljem need omadused on kasutada, et suunata arengut Veeb.

REST – On Arhitektuuri Stiil, Ei ole Standardite

REST ei ole standard. Sa ei näe W3C paneb välja REST spetsifikatsioon. Sa ei näe IBM või Microsoft või Päike müüa REST developer toolkit. Miks? Sest REST on vaid stiiliga. Sa ei saa pudeli üles, et stiil. Saab aru ainult see, ja disaini, Veebi teenused selles stiilis. (Analoogne klient-server arhitektuuri stiilis. Ei ole klient-server standard.)

Samal ajal kui REST ei ole standardne, see ei standardite kasutamine:

  • HTTP
  • URL
  • XML/HTML/GIF/JPEG/jms (Ressursi Esindused)
  • text/xml, text/html, image/gif, image/jpeg, jne (MIME Tüübid)

Klassikaline REST Süsteem

Veebi on REST süsteemi! Paljud neist, Veeb services, mis teil on, kasutades neid aastaid – raamat-teenuste tellimisel, otsing teenused, online sõnastik teenused, jne on REST põhise Veebi teenused. Oh, te olete olnud kasutades REST, hoone REST teenused ja sa isegi ei tea seda.
REST on mures, et “suur pilt” Veeb. See ei käsitle rakendamise üksikasjad (nt, kasutades Java servlets või CGI rakendada Web service). Nii et vaatame näiteks luua Veeb service REST “suur pilt” perspektiiv.
Osad Depot Veeb Teenused

Parts Depot, Inc (fiktiivne ettevõte) on kasutusele võtnud mõned veeb teenuseid, et võimaldada oma klientidele:

  • saada osade loetelu
  • saada üksikasjalikku teavet konkreetse osa
  • esitada Tellimus (Purchase Order – PO)

Vaatleme, kuidas kõik need teenused on rakendatud REST mood.

Saada Detailide Nimekiri

Veebiteenus teeb kättesaadavaks URL osade nimekiri ressurss. Näiteks, klient oleks selle URL, et saada detailide nimekiri:

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

Pange tähele, et “kuidas” web service tekitab osade loetelu on täiesti läbipaistev kliendile. Kõik kliendi teab, on see, et kui ta väidab, et eespool URL, siis dokument, mis sisaldab loetelu osad on tagasi. Kuna rakendamine on läbipaistev klientidele, Osad Depot on tasuta muuta alusvara rakendamiseks seda ressurssi ilma mõjutab kliente. See on lahti siduri.

Siin on dokument, mis saab klient:

<?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>

[Eeldada, et läbi sisu läbirääkimisi teenuse kindlaks, et klient tahab esitus XML (masin-et-masin töötlemine).] Pane tähele, et osade nimekiri on lingid, et saada üksikasjalikku teavet iga osa. See on oluline funktsioon REST. Klient ülekandeid ühest riigist järgmise uurides ja valides hulgast alternatiivsete URL vastuse numbri.

Saada Üksikasjalikku Osa Andmed

Veebiteenus teeb kättesaadavaks URL-iga osa ressurss. Näiteks, siin on, kuidas klient nõuab osa 00345:

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

Siin on dokumenteerida, mis saab klient:

<?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>

Jälle jälgida, kuidas need andmed on seotud ikka rohkem andmeid – kirjeldus selle osa võib leida liiklevad hüperlink. Iga vastuse dokument, mis võimaldab kliendil puurida, et saada rohkem üksikasjalikku teavet.

Esitada PO

Veebiteenus teeb kättesaadavaks URL esitada PO. Klient loob PO astme dokumenteerida, mis vastab PO skeemi, et Osad Depot on kavandatud (ja avalikustada WSDL dokument). Klient väidab, PO.xml nagu kandevõime HTTP POST.

PO teenus vastab HTTP-POST URL esitatud PO. Seega, klient saab tuua PO tahes ajal pärast seda (uuendada/muuta seda). PO on muutunud tükk informatsiooni, mis on jagatud kliendi ja serveri. Jagatud teave (PO) on antud aadressi (URL), mille server ja on avatud nii Veeb teenus.

Loogiline URL võrreldes Füüsilise URL

Ressurss on kontseptuaalne üksus. Kujutis on konkreetne ilming ressurss. Selle URL:

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

on loogiline URL, mitte füüsilisi URL-i. Seega, seal ei pea olema, näiteks staatiline HTML leht, iga osa jaoks. Tegelikult, kui seal olid miljonit osad seejärel miljonit staatilised HTML lehed ei oleks väga atraktiivne disain.

[Rakendamise detail: Osad Depot võib rakendada teenuse, mis saab üksikasjalike andmete saamiseks konkreetse osa, mida kasutatakse Java Servlet, mis sõelub string pärast hosti nime kasutab osa number päring osad andmebaasi, sõnastama päringu tulemustest, kui XML-i, ja siis tagastab XML-nagu kandevõime HTTP vastust.]

Küsimus stiilis URL ei tuleks paljastada rakendamiseks kasutatav tehnika. Sa pead olema vaba, et muuta oma rakendamisega ilma mõjutab klientide või millel on eksitav URL.

REST Veeb Teenused Omadused

Siin on omadusi, REST:

  • Klient-Server: tõmba-põhise suhtlemise stiil: tarbivad komponendid tõmba esindused.
  • Kodakondsuseta: iga taotluse klient server peab sisaldama kogu teavet, mis on vajalik, et mõista nõuda, ja ei saa ära tahes salvestatud kontekstis serveris.
  • Vahemälu: et parandada võrgu tõhusust lahendused peavad saama märgistatud cacheable või mitte-cacheable.
  • Ühtne liides: kõik ressursid on juurde üldine liides (nt, HTTP GET, POST, PUT, DELETE).
  • Nimetatud vahendid – süsteem koosneb vahendid, mis on nimetatud kasutades URL.
  • Omavahel seotud ressursi-esindused ressursid on omavahel ühendatud, kasutades URL, mis võimaldab kliendil edu ühest riigist teise.
  • Kihiline komponendid – vahendajate, nagu proxy servereid, cache serverid, väravad, saab lisada klientide vahel ja ressursse, et toetada jõudluse, turvalisuse jne.

Põhimõtted REST Veeb Teenuse Disain

1. Võti luua Veeb Teenuste REST võrk (st., Veeb) on välja selgitada kõik kontseptuaalne üksused, mida soovite seada teenuseid. Eespool nägime mõned näited ressursid: osade loetelu, üksikasjalikud osa andmeid tellimusele.
2. Loo URL ressurss. Vahendid peaksid olema suure algustähega, ei tegusõnad. Näiteks, ärge kasutage seda:

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

Märkus tegusõna getPart. Selle asemel, kasutada nimisõna:

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

3. Kategoriseerida oma ressursse vastavalt sellele, kas kliendid saavad lihtsalt saada esindatus ressurss, või seda, kas kliendid saavad muuta (lisada) ressurss. Endise teha nimetatud vahendite kasutamisel ligipääsetav HTTP GET. Hiljem, neid vahendeid kasutades ligipääsetav HTTP POST, PUT, ja/või DELETE.
4. Kõik vahendid on kättesaadav HTTP GET tuleks kõrvaltoime tasuta. See tähendab, et ressurssi peaks lihtsalt tagasi esindatuse ressurss. Viidates ressursside tagajärjel ei tohiks muuta ressurss.
5. Ükski mees/naine on saar. Samuti ei ole esindatud peaks olema saarel. Teisisõnu, pane hüperlingid jooksul ressurss esindused, et võimaldada klientidel puurida lisateavet ja/või saada seotud teavet.
6. Disain avaldada andmeid järk-järgult. Ärge avaldage kõik ühest vastust dokument. Pakkuda hüperlinke, et saada rohkem üksikasju.
7. Täpsustada vormi vastuse andmeid, kasutades skeemi (DTD, W3C Schema, RelaxNG, või Schematron). Need teenused, mis nõuavad POST või PUT talle anda ka skeemi, et täpsustada vormi vastust.
8. Kirjeldada, kuidas oma teenuseid ei saa tugineda, kasutades kas WSDL dokument, või lihtsalt HTML.

Kokkuvõte

Selles artiklis kirjeldatud REST nii nagu on arhitektuuri stiilis. Tegelikult, see on arhitektuurse stiili Veeb. REST kirjeldab, mis teeb Veebi tööd hästi. Järgides REST põhimõtted on teha oma teenused töötavad hästi raames Veeb.

Tulevases artiklis ma kirjutan arengu Veebis, kasutades REST põhimõtted.

Kinnitus

Tänu Robert Leftwich ja Philip Eskelin oma väga kasulik kommentaarid loomisel see dokumenteerimine.

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

Tagasi esilehele