Source: http://xfront.com/REST-Web-Services.html
Roger L. Costello
Aion ensin antaa lyhyen johdannon lepoa ja sitten REST, miten rakentaa web-palveluja REST tyyliin.
Mikä on REST?
Lepo on termi Roy Fielding hänen Ph.D. Väitöskirja [1] kuvaamaan arkkitehtuurin tyyliin verkotettujen järjestelmien. Lepo on lyhenne sanoista seisomaan rest.
Miksi sitä kutsutaan REST?
Web koostuu resursseja. Resurssi on mikä tahansa seikka kiinnostaa. Esimerkiksi Boeing Aircraft Corp voi määritellä 747 resurssi. Asiakas voi käyttää tätä resurssia tämän URL:
http://www.boeing.com/aircraft/747
Esitysmuoto resurssi palautetaan (esimerkiksi, Boeing747.html). Edustamiseen asettaa asiakassovellus tilassa. Tulos asiakkaan liikkumisesta hyperlinkkiä Boeing747.html on toinen resurssi on näytetty. Uuden esitys asettaa asiakkaan sovelluksen vielä toiseen tilaan. Siten asiakas sovellusmuutoksista (siirrot) tila jokaisen resurssin edustus -> rest!
Tässä on Roy Fielding selitys merkityksen rest:
“REST on tarkoitettu herättämään kuva siitä, kuinka hyvin suunniteltu Web-sovellus toimii: verkon web-sivuja (virtuaalinen tila-kone), jossa käyttäjä etenee sovelluksen valitsemalla linkkejä (siirtymät), jolloin Seuraavalla sivulla (joka edustaa seuraava tila hakemuksen) siirretään käyttäjälle ja sulatettu niiden käyttöä.”
Motivaatio REST
Motivaatio REST kaapata ominaisuuksia Web mikä teki Web onnistunut. Myöhemmin nämä ominaisuudet ovat käytössä ohjaamaan kehitystä Web.
REST – arkkitehtuurityyli, ole standardi
Lepoaikaa ei ole vakio. Et näe W3C ojentaen REST erittely. Et näe IBM tai Microsoft tai Sun myydä LEPO kehittäjän työkalupakki. Miksi? Koska Lepo on vain arkkitehtuuria. Et voi tukahduttaa että tyyli. Voit vain ymmärtää sitä, ja suunnitella verkkopalveluita että tyyli. (Samalla tavalla kuin asiakas-palvelin arkkitehtuuria. Ei ole asiakas-palvelin-standardin.)
Vaikka lepoaikaa ei ole vakio, se käyttää standardeja:
- HTTP
- URL-
- XML / HTML / GIF / JPEG / etc (Resource edustustot)
- teksti / xml, text / html, image / gif, image / jpeg, jne (MIME-tyypit)
Klassinen REST järjestelmä
Web on lepojärjestelmän! Monet niistä web-palvelut, jotka olet käyttänyt näitä monta vuotta – book-tilauspalvelut, hakupalvelut, online-sanakirja palvelut jne – ovat REST-pohjainen web-palveluja. Valitettavasti olet käyttänyt REST, rakentaa aika Muut ja et edes tiedä sitä.
Lepo on kyse “iso kuva” Web. Se ei käsitellä täytäntöönpanon yksityiskohtia (esim Java servletit tai CGI toteuttaa verkkopalveluun). Joten Katsotaanpa esimerkkiä, jossa luodaan Web-palvelun muusta “iso kuva” näkökulmasta.
Osavarasto Web Services
Osavarasto, Inc (kuvitteellisen yrityksen) on käyttänyt joitakin verkkopalveluita avulla asiakkaat pystyvät:
- saat listan osista
- saada yksityiskohtaista tietoa tietystä osasta
- esittää ostotilaus (PO)
Tarkastellaan, miten jokainen näistä palveluista toteutetaan REST tavalla.
Saat Osaluettelo
Verkkopalvelu saataville URL varaosa- resurssi. Esimerkiksi asiakas voisi käyttää tätä URL-osoitetta saada osaluettelon:
http://www.parts-depot.com/parts
Huomaa, että “miten” verkkopalvelun luo osaluettelossa on täysin läpinäkyvä asiakkaalle. Kaikki asiakas tietää, että jos hän / hän toimittaa edellä URL noutaa asiakirjan, joka sisältää luettelon osista palautetaan. Koska täytäntöönpano on avointa asiakkaille, Osavarasto voi vapaasti muuttaa taustalla täytäntöönpanossa resurssin vaikuttamatta asiakkaita. Tämä on löysä kytkentä.
Tässä asiakirjassa, että asiakas saa:
<?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>
[Oletetaan, että läpi sisältöneuvottelua palvelun päättänyt, että asiakas haluaa edustus XML (koneellisesti to-machine käsittely).] Huomaa, että osat listalla on linkkejä saada yksityiskohtaista tietoa kustakin osasta. Tämä on keskeinen piirre lepoa. Asiakas siirtää yhdestä tilasta seuraavaan tutkimalla ja valitsemalla joukosta vaihtoehtoisista URL-vastineessa.
Hanki yksityiskohtaisia Osa tieto
Verkkopalvelu saataville URL jokaiseen osaan resurssi. Esimerkiksi tässä miten asiakas pyytää osa 00345:
http://www.parts-depot.com/parts/00345
Tässä asiakirjassa, että asiakas saa:
<?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>
Huomauttavat, miten tämä tieto liittyy vielä enemmän tietoja – selityksessä tämän osan voidaan löytää liikkumisesta hyperlinkin. Kukin Vastausasiakirja avulla asiakas voi porautua saada tarkempia tietoja.
Lähetä PO
Verkkopalvelu saataville URL esittää postilokero. Asiakas luo postilokero esimerkiksi dokumentin, joka noudattaa PO skeema Osavarasto on suunnitellut (ja julkisuutta WSDL asiakirjassa). Asiakas toimittaa PO.xml kuin hyötykuorma HTTP POST.
PO palvelu vastaa HTTP POST kanssa URL toimitettu PO. Näin asiakas voi hakea PO tahansa myöhemmin (päivittää / muokata sitä). PO on tullut tieto, joka on jaettu asiakkaan ja palvelimen. Jaettu tieto (PO) annetaan osoite (URL) palvelimen ja altistuu verkkopalveluun.
Looginen URL-osoitteita vastaan Fyysinen URL-osoitteita
Resurssi on käsitteellinen kokonaisuus. Esitysmuoto on konkreettinen osoitus resurssi. Tämä URL-osoite:
http://www.parts-depot.com/parts/00345
on looginen URL-osoite, ei ole fyysinen URL-osoitetta. Näin ollen on olemassa ei tarvitse olla esimerkiksi staattinen HTML-sivun kutakin osaa. Itse asiassa, jos olisi miljoonaa osaa sitten miljoona staattisia HTML-sivuja ei olisi erittäin houkutteleva design.
[Toteutusyksityiskohta: Osavarasto voisi toteuttaa palvelu, joka saa yksityiskohtaisia tietoja tietystä osasta käyttämällä Java Servlet, joka jäsentää merkkijono jälkeen koneen nimi, käyttää osanumero kyselyn osia tietokannasta, muotoilla kyselyn tulokset XML, ja ja palauta XML hyötykuorma HTTP-vastauksen.]
Koska asia tyyli URL-osoitteita ei pitäisi paljastaa toteuttamista käytetty tekniikka. Sinun täytyy olla vapaasti muuttaa täytäntöönpanoa vaikuttamatta asiakkaille tai ottaa harhaanjohtavia URL-osoitteita.
REST Web Services Ominaisuudet
Tässä ovat REST ominaisuuksia muiden:
- Asiakas-palvelin: pull-lähtöinen vuorovaikutus tyyliin: kuluttavien komponenttien vetää esityksiä.
- Kansalaisuudettomia: jokainen pyyntö asiakkaalta palvelimelle on sisällettävä kaikki tarvittavat tiedot ymmärtää pyynnön, ja voi hyödyntää kaikki tallennetut yhteydessä palvelimeen.
- Välimuisti: parantaa verkon tehokkuutta vasteita on voitava merkitä välimuistia tai ei-välimuistia.
- Yhtenäinen rajapinta: kaikki resurssit pääsee geneerisen rajapinnan (esim., HTTP GET, POST, PUT, DELETE).
- Nimetty resurssit – järjestelmä koostuu resursseja, jotka on nimetty käyttämällä URL.
- Interconnected resurssi esitykset – edustustojen resurssien kytketään toisiinsa URL-osoitteita, mikä mahdollistaa asiakkaan edetä tilasta toiseen.
- Layered komponentit – välittäjät, kuten proxy-välimuistin palvelimet, yhdyskäytäviä, jne, voidaan lisätä asiakkaiden ja resursseja tukea suorituskyky, turvallisuus jne
Periaatteet REST verkkopalvelun suunnittelu
1. avainasemassa luotaessa Web Services lepoasennossa verkossa (eli Web) on tunnistaa kaikki käsitteellinen yhteisöistä, jotka haluat paljastaa palveluina. Yllä näimme joitakin esimerkkejä resursseja: osaluettelossa, yksityiskohtainen osa dataa, tilaaminen.
2. Luo URL kunkin resurssin. Resursseja olisi substantiiveja, eikä verbejä. Esimerkiksi, älä käytä tätä:
http://www.parts-depot.com/parts/getPart?id=00345
Huomaa verbi, getPart. Käytä sen sijaan substantiivi:
http://www.parts-depot.com/parts/00345
3. luokitteleminen resursseja sen mukaan, ovatko asiakkaat voivat vain saada edustus resurssi, vai asiakkaat voivat muokata (lisätä) resurssi. Entisen, tehdä näitä resursseja saataville käyttäen HTTP GET. Lihavuuden tehdä näitä resursseja saatavilla HTTP POST, PUT, ja / tai Poista.
4. Kaikki resurssit pääsee HTTP GET pitäisi olla sivuvaikutuksia ilmaiseksi. Eli resurssi pitäisi vain palauttaa edustus resurssi. Vetoaminen resurssi saisi johtaa muokkaamalla resurssi.
5. Ei kukaan / nainen on saari. Samoin ei esitä, pitäisi olla saari. Toisin sanoen, laita hyperlinkkejä resurssi esityksiä, jotta asiakkaat porautua lisätietoja, ja / tai saada siihen liittyviä tietoja.
6. malli paljastaa tietoja vähitellen. Eivät paljasta kaikkea yhdessä vastineessa. Hyperlinkkejä saada lisätietoja.
7. Määritä muoto vasteen dataa skeema (DTD, W3C Schema, RelaxNG, tai Schematron). Niille, jotka tarvitsevat vastaanottajan POST tai laittaa siihen, myös skeema määrittää muodon vastausta.
8. Kuvaile miten palvelut on vedota joko WSDL asiakirja, tai yksinkertaisesti HTML-dokumentti.
Yhteenveto
Tämä artikkeli on kuvattu REST arkkitehtuurityyli. Itse asiassa se on arkkitehtoninen tyyli Web. REST kuvailee mitä tekee verkossa toimivat hyvin. Kiinni REST periaatteet tekevät palvelut toimivat hyvin yhteydessä Web.
Tulevassa artikkelissa aion kirjoittaa kehittymisestä Web REST periaatteita.
Tunnustus
Kiitos Robert Leftwich ja Philip Eskelin erittäin hyvästä kommentit luomisessa tässä asiakirjassa.
Viitteet
[1] http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
Comments are closed, but trackbacks and pingbacks are open.