REST Architectural Constraints

REST on lyhenne sanoista Representational State Transfer, jonka Roy Fielding keksi vuonna 2000. Se on arkkitehtuurin tyyli suunnitella löyhästi kytkettyjä sovelluksia HTTP: n päälle, jota käytetään usein verkkopalvelujen kehittämisessä. Lepo ei valvo mitään sääntöä siitä, miten se olisi toteutettava alemmalla tasolla, se vain laittaa korkean tason suunnitteluohjeet ja jättää sinut ajattelemaan omaa täytäntöönpanoa.

viimeisimmässä työssäni suunnittelin levollisia sovellusliittymiä suurelle teleyritykselle kahden reilun vuoden ajan. Tässä viestissä Jaan ajatuksiani normaalien suunnittelukäytäntöjen lisäksi. Et ehkä ole samaa mieltä kanssani muutamasta asiasta, ja se on täysin OK. Keskustelen mielelläni kaikesta avoimin mielin.

aloitetaan vakiomuotoisilla erikoisjutuilla, joilla selvitetään ,mitä ’Roy Fielding’ haluaa meidän rakentavan. Sitten keskustelemme ajatuksistani, jotka suuntautuvat enemmän hienouksiin, kun suunnittelet levollisia Sovellusliittymiäsi.

arkkitehtoniset rajoitteet

lepo määrittelee 6 arkkitehtuurista rajoitteita, jotka tekevät mistä tahansa verkkopalvelusta todellisen rauhallisen API: n.

  1. Uniform interface
  2. Client–server
  3. Stateless
  4. Cacheable
  5. Layered system
  6. code on demand (valinnainen)

Uniform interface

koska rajoituksen nimi itsessään on voimassa, sinun on päätettävä API-rajapinnasta resursseille, jotka ovat alttiina API-kuluttajille ja joita seurataan uskonnollisesti. Resurssilla järjestelmässä pitäisi olla vain yksi looginen URI, ja sen pitäisi tarjota tapa hakea aiheeseen liittyviä tai lisätietoja. On aina parempi synkronoida resurssi web-sivu.

mikään yksittäinen resurssi ei saa olla liian suuri ja sisältää jokaista ja kaikkea edustuksessaan. Resurssin tulee aina tarvittaessa sisältää linkkejä (HATEOAS), jotka viittaavat suhteellisiin Ureihin, jotta niihin liittyvät tiedot voidaan hakea.

myös koko järjestelmän resurssien esitysten tulisi noudattaa erityisiä ohjeita, kuten nimeämiskäytäntöjä, linkkiformaatteja tai tietomuotoa (XML tai/ja JSON).

kaikkien resurssien tulisi olla käytettävissä yhteisen lähestymistavan, kuten HTTP GET: n, kautta ja vastaavasti muokattuina käyttäen johdonmukaista lähestymistapaa.

kun Kehittäjä tutustuu yhteen Sovellusliittymistäsi, hänen pitäisi pystyä noudattamaan samanlaista lähestymistapaa muidenkin sovellusliittymien osalta.

asiakas-palvelin

tämä rajoitus tarkoittaa käytännössä sitä, että asiakassovelluksen ja palvelinsovelluksen on voitava kehittyä erikseen ilman riippuvuutta toisistaan. Asiakkaan pitäisi tietää vain resurssiurit, ja siinä kaikki. Nykyään tämä on normaali käytäntö web-kehityksessä, joten sinun puoleltasi ei tarvita mitään hienoa. Yksinkertaista.

palvelimia ja asiakkaita voidaan myös korvata ja kehittää itsenäisesti, kunhan niiden välistä rajapintaa ei muuteta.

Stateless

Roy fielding sai innoituksen HTTP: stä, joten se kuvastaa tätä rajoitetta. Tee kaikista asiakkaan ja palvelimen välisistä vuorovaikutuksista valtiottomia. Palvelin ei tallenna mitään asiakkaan viimeisimmästä HTTP-pyynnöstä. Se pitää jokaista pyyntöä uutena. Ei istuntoa, ei historiaa.

jos asiakassovelluksen on oltava tilasovellus loppukäyttäjälle, jossa käyttäjä kirjautuu sisään kerran ja tekee sen jälkeen muita valtuutettuja toimintoja, jokaisen asiakkaan pyynnön on sisällettävä kaikki pyynnön huoltamiseen tarvittavat tiedot – mukaan lukien todennus-ja Valtuutustietojen tiedot.

palvelimelle ei tallenneta asiakaskontekstia pyyntöjen välillä. Asiakas on vastuussa hakemuksen tilan hallinnoinnista.

Cacheable

nykymaailmassa tietojen ja vastausten tallentaminen välimuistiin on äärimmäisen tärkeää aina, kun se on sovellettavissa/mahdollista. Sivu, jota luet täällä, on myös välimuistissa oleva versio HTML-sivusta. Välimuistin tallentaminen tuo asiakaspuolelle suorituskyvyn parannusta ja palvelimelle paremman skaalautuvuuden, koska kuormitus on vähentynyt.

muussa tapauksessa resursseihin on sovellettava välimuistia soveltuvin osin, minkä jälkeen näiden resurssien on ilmoitettava olevansa välimuistikelpoisia. Välimuistiin tallentaminen voidaan toteuttaa palvelimella tai asiakaspuolella.

hyvin hallittu välimuistin tallentaminen poistaa osittain tai kokonaan joitakin asiakkaan ja palvelimen välisiä vuorovaikutuksia, mikä parantaa edelleen skaalautuvuutta ja suorituskykyä.

Layered system

REST mahdollistaa kerroksellisen järjestelmäarkkitehtuurin, jossa sovellusliittymät otetaan käyttöön palvelimella a, tiedot tallennetaan palvelimelle B ja pyynnöt todennetaan esimerkiksi palvelimeen C. Asiakas ei yleensä voi kertoa, onko se kytketty suoraan päätepalvelimeen vai välittäjään matkan varrella.

Code on demand (valinnainen)

No, tämä rajoitus on valinnainen. Suurimman osan ajasta, voit lähettää staattisia esityksiä resurssien muodossa XML tai JSON. Mutta kun tarvitset, voit vapaasti return executable code tukea osaa sovelluksestasi, esim. asiakkaat voivat soittaa API: llesi saadaksesi KÄYTTÖLIITTYMÄELEMENTIN renderöintikoodin. Se on sallittua.

kaikki edellä mainitut rajoitteet auttavat rakentamaan todella rauhallisen API: n, ja niitä kannattaa noudattaa. Toisinaan saatat kuitenkin havaita rikkovasi joitakin rajoituksia. Älä huoli; teet edelleen levollista API: ta – mutta et ”todella levollista.”

huomaa, että kaikki edellä mainitut rajoitukset liittyvät läheisimmin WWW (web). Levollisilla Sovellusliittymillä voit tehdä verkkopalveluillesi saman kuin verkkosivuille.

oliko tästä kirjoituksesta apua?

Kyllä
Ei

Vastaa

Sähköpostiosoitettasi ei julkaista.

More: