REST

Material iz Vikipedii -- svobodnoi entsiklopedii
Tekushchaia versiia stranitsy poka ne proverialas' opytnymi uchastnikami i mozhet znachitel'no otlichat'sia ot versii, proverennoi 26 avgusta 2025 goda; proverki trebuiut 2 pravki.
Pereiti k navigatsii Pereiti k poisku

REST (ot angl. Representational State Transfer -- <> ili <>) -- arkhitekturnyi stil' vzaimodeistviia komponentov raspredelionnogo prilozheniia v seti. Drugimi slovami, REST -- eto nabor pravil togo, kak programmistu organizovat' napisanie koda servernogo prilozheniia, chtoby vse sistemy legko obmenivalis' dannymi i prilozhenie mozhno bylo masshtabirovat'[1]. REST predstavliaet soboi soglasovannyi nabor ogranichenii, uchityvaemykh pri proektirovanii raspredelionnoi gipermedia-sistemy. V opredelionnykh sluchaiakh (internet-magaziny, poiskovye sistemy; prochie sistemy, osnovannye na dannykh) eto privodit k povysheniiu proizvoditel'nosti i uproshcheniiu arkhitektury. V shirokom smysle[utochnit'] komponenty v REST vzaimodeistvuiut napodobie vzaimodeistviia klientov i serverov vo Vsemirnoi pautine. REST iavliaetsia al'ternativoi RPC[2].

REST-zapros predstavliaet soboi obychnyi HTTP-zapros (obychno GET ili POST), a neobkhodimye dannye peredaiutsia v kachestve parametrov zaprosa[3][4].

Dlia veb-sluzhb, postroennykh s uchiotom REST (to est' ne narushaiushchikh nakladyvaemykh im ogranichenii), primeniaiut termin <<RESTful>>.

V otlichie ot veb-servisov (veb-sluzhb) na osnove SOAP, ne sushchestvuet <> standarta dlia RESTful veb-API. Delo v tom, chto REST iavliaetsia arkhitekturnym stilem, v to vremia kak SOAP iavliaetsia protokolom. Nesmotria na to, chto REST ne iavliaetsia standartom sam po sebe, bol'shinstvo RESTful-realizatsii ispol'zuet takie standarty, kak HTTP, URL, JSON i, rezhe, XML. RESTful API ispol'zuiutsia dlia avtomatizirovannogo vzaimodeistviia mezhdu sistemami v razlichnykh oblastiakh, vkliuchaia upravlenie domennymi imenami, khostingom i sertifikatami bezopasnosti.[5]

Istoriia termina

[pravit' | pravit' kod]

Khotia dannaia kontseptsiia lezhit v samoi osnove Vsemirnoi pautiny, termin <> byl vvedion Roem Fildingom, odnim iz sozdatelei protokola <<HTTP>>, lish' v 2000 godu[4]. V svoei dissertatsii <> (<>)[6] v Kaliforniiskom universitete v Irvaine[3] on podviol teoreticheskuiu osnovu pod sposob vzaimodeistviia klientov i serverov vo Vsemirnoi pautine, abstragirovav ego i nazvav <> (<>>). Filding opisal kontseptsiiu postroeniia raspredelionnogo prilozheniia, pri kotoroi kazhdyi zapros (REST-zapros) klienta k serveru soderzhit v sebe ischerpyvaiushchuiu informatsiiu o zhelaemom otvete servera (zhelaemom predstavitel'nom sostoianii) i server ne obiazan sokhraniat' informatsiiu o sostoianii klienta (<>).

Stil' <> razvivalsia parallel'no s <<HTTP 1.1>>, razrabotannym v 1996--1999 godakh, osnovyvaias' na sushchestvuiushchem dizaine <<HTTP 1.0>>, razrabotannom v 1996 godu[7].

Svoistva arkhitektury REST

[pravit' | pravit' kod]

Svoistva arkhitektury, kotorye zavisiat ot ogranichenii, nalozhennykh na REST-sistemy:

  • Proizvoditel'nost': vzaimodeistvie komponentov sistemy mozhet iavliat'sia dominiruiushchim faktorom proizvoditel'nosti i effektivnosti seti s tochki zreniia pol'zovatelia;
  • Masshtabiruemost' dlia obespecheniia bol'shogo chisla komponentov i vzaimodeistvii komponentov.

Roi Filding (odin iz glavnykh avtorov spetsifikatsii protokola HTTP) opisyvaet vliianie arkhitektury REST na masshtabiruemost' sleduiushchim obrazom:

  • Prostota unifitsirovannogo interfeisa;
  • Otkrytost' komponentov k vozmozhnym izmeneniiam dlia udovletvoreniia izmeniaiushchikhsia potrebnostei (dazhe pri rabotaiushchem prilozhenii);
  • Prozrachnost' sviazei mezhdu komponentami sistemy dlia servisnykh sluzhb;
  • Perenosimost' komponentov sistemy putiom peremeshcheniia programmnogo koda vmeste s dannymi;
  • Nadiozhnost', vyrazhaiushchaiasia v ustoichivosti k otkazam na urovne sistemy pri nalichii otkazov otdel'nykh komponentov, soedinenii ili dannykh.[3]

Trebovaniia k arkhitekture REST

[pravit' | pravit' kod]

Sushchestvuet piat' obiazatel'nykh[8][9] ogranichenii dlia postroeniia raspredelionnykh REST-prilozhenii po Fildingu[3][10], i odno neobiazatel'noe.

Nakladyvaemye ogranicheniia opredeliaiut rabotu servera v tom, kak on mozhet obrabatyvat' i otvechat' na zaprosy klientov. Deistvuia v ramkakh etikh ogranichenii, sistema priobretaet takie zhelatel'nye svoistva, kak proizvoditel'nost', masshtabiruemost', prostota, sposobnost' k izmeneniiam, perenosimost', otslezhivaemost' i nadiozhnost'.

Esli servis-prilozhenie narushaet liuboe iz etikh ogranichitel'nykh uslovii, dannuiu sistemu nel'zia schitat' REST-sistemoi[3].

Obiazatel'nymi usloviiami-ogranicheniiami iavliaiutsia:

1. Model' klient-server

[pravit' | pravit' kod]

Pervym ogranicheniem, primenimym k gibridnoi modeli, iavliaetsia privedenie arkhitektury k modeli klient-server. Razgranichenie potrebnostei iavliaetsia printsipom, lezhashchim v osnove dannogo nakladyvaemogo ogranicheniia. Otdelenie potrebnosti interfeisa klienta ot potrebnostei servera, khraniashchego dannye, povyshaet perenosimost' koda klientskogo interfeisa na drugie platformy, a uproshchenie servernoi chasti uluchshaet masshtabiruemost'. Naibol'shee zhe vliianie na vsemirnuiu pautinu, pozhalui, imeet samo razgranichenie, kotoroe pozvoliaet otdel'nym chastiam razvivat'sia nezavisimo drug ot druga, podderzhivaia potrebnosti v razvitii interneta so storony razlichnykh organizatsii.[3]

2. Otsutstvie sostoianiia

[pravit' | pravit' kod]

Protokol vzaimodeistviia mezhdu klientom i serverom trebuet sobliudeniia sleduiushchego usloviia: v period mezhdu zaprosami klienta nikakaia informatsiia o sostoianii klienta na servere ne khranitsia (Stateless protocol ili <>). Vse zaprosy ot klienta dolzhny byt' sostavleny tak, chtoby server poluchil vsiu neobkhodimuiu informatsiiu dlia vypolneniia zaprosa. Sostoianie sessii pri etom sokhraniaetsia na storone klienta[3]. Informatsiia o sostoianii sessii mozhet byt' peredana serverom kakomu-libo drugomu servisu (naprimer, v sluzhbu bazy dannykh) dlia podderzhaniia ustoichivogo sostoianiia, naprimer, na period ustanovleniia autentifikatsii. Klient initsiiruet otpravku zaprosov, kogda on gotov (voznikaet neobkhodimost') pereiti v novoe sostoianie.

Vo vremia obrabotki klientskikh zaprosov schitaetsia, chto klient nakhoditsia v perekhodnom sostoianii. Kazhdoe otdel'noe sostoianie prilozheniia predstavleno sviaziami, kotorye mogut byt' zadeistvovany pri sleduiushchem obrashchenii klienta.

3. Keshirovanie

[pravit' | pravit' kod]
V razdele ne khvataet ssylok na istochniki (sm. rekomendatsii po poisku).
Informatsiia dolzhna byt' proveriaema, inache ona mozhet byt' udalena. Vy mozhete otredaktirovat' stat'iu, dobaviv ssylki na avtoritetnye istochniki v vide snosok. (16 marta 2017)

Kak i vo Vsemirnoi pautine, klienty, a takzhe promezhutochnye uzly, mogut vypolniat' keshirovanie otvetov servera. Otvety servera, v svoiu ochered', dolzhny imet' iavnoe ili neiavnoe oboznachenie kak keshiruemye ili nekeshiruemye s tsel'iu predotvrashcheniia polucheniia klientami ustarevshikh ili nevernykh dannykh v otvet na posleduiushchie zaprosy. Pravil'noe ispol'zovanie keshirovaniia sposobno chastichno ili polnost'iu ustranit' nekotorye problemy klient-servernogo vzaimodeistviia, eshchio bol'she povyshaia proizvoditel'nost' i masshtabiruemost' sistemy.

4. Edinoobrazie interfeisa

[pravit' | pravit' kod]

Nalichie unifitsirovannogo interfeisa iavliaetsia fundamental'nym trebovaniem dizaina REST-servisov[3]. Unifitsirovannye interfeisy pozvoliaiut kazhdomu iz servisov razvivat'sia nezavisimo.

K unifitsirovannym interfeisam pred'iavliaiutsia sleduiushchie chetyre ogranichitel'nykh usloviia[11][12]:

Identifikatsiia resursov
Vse resursy identifitsiruiutsia v zaprosakh, naprimer, s ispol'zovaniem URI v internet-sistemakh. Resursy kontseptual'no otdeleny ot predstavlenii, kotorye vozvrashchaiutsia klientam. Naprimer, server mozhet otsylat' dannye iz bazy dannykh v vide HTML, XML ili JSON, ni odin iz kotorykh ne iavliaetsia tipom khraneniia vnutri servera.

Manipuliatsiia resursami cherez predstavlenie
Esli klient khranit predstavlenie resursa, vkliuchaia metadannye -- on obladaet dostatochnoi informatsiei dlia modifikatsii ili udaleniia resursa.

<> soobshcheniia
Kazhdoe soobshchenie soderzhit dostatochno informatsii, chtoby poniat', kakim obrazom ego obrabatyvat'. K primeru, obrabotchik soobshcheniia (parser), neobkhodimyi dlia izvlecheniia dannykh, mozhet byt' ukazan v spiske MIME-tipov[3].

Gipermedia kak sredstvo izmeneniia sostoianiia prilozheniia (HATEOAS)
Klienty izmeniaiut sostoianie sistemy tol'ko cherez deistviia, kotorye dinamicheski opredeleny v gipermedia na servere (k primeru, giperssylki v gipertekste). Iskliuchaia prostye tochki vkhoda v prilozhenie, klient ne mozhet predpolozhit', chto dostupna kakaia-to operatsiia nad kakim-to resursom, esli ne poluchil informatsiiu ob etom v predydushchikh zaprosakh k serveru. Ne sushchestvuet universal'nogo formata dlia predostavleniia ssylok mezhdu resursami, Web Linking (RFC 5988 -> RFC 8288) i JSON Hypermedia API Language Arkhivnaia kopiia ot 27 iiunia 2014 na Wayback Machine iavliaiutsia dvumia populiarnymi formatami predostavleniia ssylok v REST HYPERMEDIA servisakh.

5. Sloi

[pravit' | pravit' kod]

Klient obychno ne sposoben tochno opredelit', vzaimodeistvuet li on napriamuiu s serverom ili zhe s promezhutochnym uzlom, v sviazi s ierarkhicheskoi strukturoi setei (podrazumevaia, chto takaia struktura obrazuet sloi). Primenenie promezhutochnykh serverov sposobno povysit' masshtabiruemost' za schiot balansirovki nagruzki i raspredelionnogo keshirovaniia. Promezhutochnye uzly takzhe mogut podchiniat'sia politike bezopasnosti s tsel'iu obespecheniia konfidentsial'nosti informatsii[13].

6. Kod po trebovaniiu (neobiazatel'noe ogranichenie)

[pravit' | pravit' kod]
V razdele ne khvataet ssylok na istochniki (sm. rekomendatsii po poisku).
Informatsiia dolzhna byt' proveriaema, inache ona mozhet byt' udalena. Vy mozhete otredaktirovat' stat'iu, dobaviv ssylki na avtoritetnye istochniki v vide snosok. (16 marta 2017)

REST mozhet pozvolit' rasshirit' funktsional'nost' klienta za schiot zagruzki koda s servera v vide appletov ili skriptov. Filding utverzhdaet, chto dopolnitel'noe ogranichenie pozvoliaet proektirovat' arkhitekturu, podderzhivaiushchuiu zhelaemuiu funktsional'nost' v obshchem sluchae, no, vozmozhno, za iskliucheniem nekotorykh kontekstov.

Preimushchestva

[pravit' | pravit' kod]

Roi Filding ukazyval, chto prilozheniia, ne sootvetstvuiushchie privedionnym usloviiam, ne mogut nazyvat'sia REST-prilozheniiami. Esli zhe vse usloviia sobliudeny, to, po ego mneniiu, prilozhenie poluchit sleduiushchie preimushchestva[3][10]:

  • Nadiozhnost' (za schiot otsutstviia neobkhodimosti sokhraniat' informatsiiu o sostoianii klienta, kotoraia mozhet byt' uteriana);
  • Proizvoditel'nost' (za schiot ispol'zovaniia kesha);
  • Masshtabiruemost';
  • Prozrachnost' sistemy vzaimodeistviia (osobenno neobkhodimaia dlia prilozhenii obsluzhivaniia seti);
  • Prostota interfeisov;
  • Portativnost' komponentov;
  • Liogkost' vneseniia izmenenii;
  • Sposobnost' evoliutsionirovat', prisposablivaias' k novym trebovaniiam (na primere Vsemirnoi pautiny).

Primechaniia

[pravit' | pravit' kod]
  1. | Chto takoe REST API (rus.). Data obrashcheniia: 11 avgusta 2021. Arkhivirovano 11 avgusta 2021 goda.
  2. | Mashnin Timur Sergeevich. Tekhnologiia Web-servisov platformy Java. -- BKhV-Peterburg, 2012. -- S. 115. -- 560 s. -- ISBN 978-5-9775-0778-3.
  3. | 1 2 3 4 5 6 7 8 9 10 Chapter 5 of Roy Fielding's dissertation <> Arkhivnaia kopiia ot 13 maia 2021 na Wayback Machine
  4. | 1 2 Fielding discussing the definition of the REST term . Tech.groups.yahoo.com. Data obrashcheniia: 28 noiabria 2013. Arkhivirovano 22 oktiabria 2010 goda.
  5. | Dokumentatsiia po API (rus.). Data obrashcheniia: 10 avgusta 2025.
  6. | Fielding Dissertation: CHAPTER 5: Representational State Transfer (REST) . www.ics.uci.edu. Data obrashcheniia: 1 dekabria 2015. Arkhivirovano 13 maia 2021 goda.
  7. | rest-discuss : Message: Re: [rest-discuss] RFC for REST? (11 noiabria 2009). Data obrashcheniia: 1 dekabria 2015. Arkhivirovano 11 noiabria 2009 goda.
  8. | Thomas Erl, Benjamin Carlyle, Cesare Pautasso, Raj Balasubramanian. 5.1 // SOA with REST / Thomas Erl. -- Prentice Hall, 2013. -- ISBN 978-0-13-701251-0.
  9. | Richardson, Leonard; Ruby, Sam (2007), RESTful Web service, O'Reilly Media, ISBN 978-0-596-52926-0, Data obrashcheniia: 18 ianvaria 2011, The main topic of this book is the web service architectures which can be considered RESTful: those which get a good score when judged on the criteria set forth in Roy Fielding's dissertation.. Istochnik . Data obrashcheniia: 30 noiabria 2016. Arkhivirovano 19 fevralia 2012 goda.
  10. | 1 2 Thomas Erl, Benjamin Carlyle, Cesare Pautasso, Raj Balasubramanian. 5.1 // SOA with REST. -- Prentice Hall, 2013. -- ISBN 978-0-13-701251-0.
  11. | Wilde, Pautasso, 2011, REST Definition.
  12. | N. L. Podkolodnyi, A. V. Semenychev, D. A. Rasskazov, V. G. Borovskii, E. A. Anan'ko, E. V. Ignat'eva, N. N. Podkolodnaia, O. A. Podkolodnaia, N. A. Kolchanov Raspredelionnaia sistema RESTful-web-servisov dlia rekonstruktsii i analiza gennykh setei. Vavilovskii zhurnal genetiki i selektsii, t. 16, N 4/1, 2012
  13. | Hartley Brody. How HTTPS Secures Connections: What Every Web Dev Should Know (angl.). Arkhivirovano 24 dekabria 2015 goda.

Literatura

[pravit' | pravit' kod]
  • Erik Wilde, Cesare Pautasso. REST: From Research to Practice. -- Springer Science & Business Media, 2011. -- 528 p. -- ISBN 978-1-4419-8303-9.

Ssylki

[pravit' | pravit' kod]
Ssylki na vneshnie resursy
V bibliograficheskikh katalogakh
Istochnik -- https://ru.wikipedia.org/w/index.php?title=REST&oldid=149596486