REST

**REST** (**Re**presentational **S**tate **T**ransfer) ‒ bul Dúnya júzlik tarmaqtıń (World Wide Web) arxitekturasın joybarlaw hám rawajlandırıwdı sıpatlaw ushın jaratılǵan programmalıq támiynat arxitekturalıq stili. REST veb sıyaqlı tarqalǵan, Internet kólemindegi gipermedia sistemasınıń arxitekturası qalay jumıs islewi kerek ekenligi boyınsha sheklewler toplamın belgileydi. REST arxitekturalıq stili birgelki interfeyslerge, komponentlerdiń ǵárezsiz ornalasıwına, olar arasındaǵı óz-ara baylanıslardıń keńeyiwine hám paydalanıwshı sezetuǵın kútiw waqıtın azaytıw ushın keshlewdi xoshametlew, qáwipsizlikti támiyinlew hám gónergen sistemalardı inkapsulyaciyalaw ushın qatlamlı arxitekturanı jaratıwǵa ayrıqsha itibar qaratadı.

REST statusın saqlamaytuǵın, isenimli veb-qosımshalardı jaratıw ushın programmalıq támiynat sanaatında keńnen qollanılǵan. REST arxitekturalıq sheklewlerine ámel etetuǵın qosımsha rásmiy emes túrde RESTful dep atalıwı múmkin, biraq bul termin kóbinese HTTP tiykarındaǵı API-lardı joybarlaw hám resurstıń juwap beretuǵın «felleri» (HTTP metodları) boyınsha keń tarqalǵan eń jaqsı ámeliyatlar dep esaplanatuǵın nárseler menen kóbirek baylanıslı, biraq baslanǵısh formulirovkalanǵan REST penen az baylanıslı hám bul koncepciyaǵa kóbinese qarama-qarsı da keledi.

## Princip
«Representational state transfer» (Jaǵdaydı kórinisli túrde uzatıw) termini 2000-jılı kompyuter alımı Roy Filding tárepinen doktorlıq dissertaciyasına kirgizilgen hám anıqlanǵan. Bul server resurstıń kórinisi menen juwap beretuǵının (búgingi kúnde bul kóbinese HTML hújjeti boladı) hám bul resursta sistemanıń jaǵdayın ózgertiw ushın izinen barıwǵa bolatuǵın gipermedia siltemeleri bolatuǵının ańlatadı. Hár qanday usınday soraw óz gezeginde resurstıń kórinisin aladı hám solay dawam etedi.

Áhmiyetli nátiyjesi sonda, tek birinshi soralǵan resurstıń identifikatorın biliw kerek, al qalǵan barlıq identifikatorlar anıqlanadı. Bul sol identifikatorlar klientti aldınnan xabardar etpesten ózgeriwi múmkin ekenligin hám klient penen server ádette bir-birine tıǵız baylanıslı bolmawı kerek ekenligin ańlatadı.

## Tariyxı

Veb 1993–1994-jılları ulıwma paydalanıw ushın veb-saytlar payda bola baslaǵanda, kúndelikli turmısqa kirip basladı. Sol waqıtta Web arxitekturasınıń tek fragmentlengen sıpatlaması bar edi hám sanaatta Veb interfeysi protokolları ushın standarttı kelisiw boyınsha ústemlik bar edi. Mısalı, proksilerdi qollap-quwatlaw ushın baylanıs protokolına (HTTP) bir neshe eksperimental keńeytpeler qosılǵan edi hám jáne de kóp keńeytpeler usınıs etilip atır edi, biraq bul ózgerislerdiń tásirin bahalaw ushın rásmiy veb arxitekturasına mútájlik bar bolǵan.

W3C hám IETF jumıs toparları birgelikte vebtiń úsh tiykarǵı standartın: URI, HTTP hám HTMLdi rásmiy túrde sıpatlaw ústinde islep basladı. Roy Filding bul standartlardı jaratıwǵa qatnastı (atap aytqanda, HTTP 1.0 hám 1.1, hám URI) hám keyingi altı jıl dawamında ol REST arxitekturalıq stilin jarattı, onıń sheklewlerin Web protokol standartlarında sınap kórdi hám onnan arxitekturalıq jaqsılanıwlardı anıqlaw hám arxitekturalıq sáykessizliklerdi belgilew ushın qural sıpatında paydalandı. Filding RESTti óziniń 2000-jılǵı UC Irvine-daǵı «Arxitekturalıq stiller hám tarmaqqa tiykarlanǵan programmalıq támiynat arxitekturaların proektlestiriw» («Architectural Styles and the Design of Network-based Software Architectures») atlı PhD dissertaciyasında anıqlaǵan.

REST arxitekturalıq stilin jaratıw ushın, Filding dúnya júzilik tarmaqqa tiykarlanǵan qosımshanı jaratıwda qollanılatuǵın talaplardı, máselen, global engiziwdi támiyinlew ushın kiriw tosıǵınıń tómen bolıwı zárúrligi sıyaqlılardı anıqladı. Ol sonday-aq tarmaqqa tiykarlanǵan qosımshalar ushın kóp bolǵan arxitekturalıq stillerdi úyrendi, basqa stiller menen ortaq bolǵan ózgesheliklerdi, mısalı, keshlew hám klient-server ózgesheliklerin, hám tek RESTke tán bolǵan ózgesheliklerdi, mısalı, resurslar koncepciyasın anıqladı. Filding házirgi ámelge asırıwdıń bar arxitekturasın kategoriyalarǵa bóliwge hám vebtiń minez-qulqı hám ónimdarlıq talapları ushın qaysı aspektler oraylıq dep esaplanıwı kerek ekenligin anıqlawǵa háreket etti.

Óz tábiyatı boyınsha, arxitekturalıq stiller hár qanday belgili bir ámelge asırıwdan ǵárezsiz boladı, hám REST veb standartların rawajlandırıwdıń bir bólimi sıpatında jaratılǵanı menen, vebtiń ámelge asırılıwı REST arxitekturalıq stilindegi hárbir sheklewge boysınbaydı. Sáykessizlikler bilmewshilik yamasa itibarsızlıq sebepli júz beriwi múmkin, biraq REST arxitekturalıq stiliniń bar ekenligi olar standartlasqanǵa shekem anıqlanıwı múmkin ekenligin ańlatadı. Mısalı, Filding URI-larǵa sessiya informaciyasın engiziwdi REST sheklewlerin buzıw dep anıqladı, bul ulıwma keshlewge hám serverdiń keńeyiwine unamsız tásir etiwi múmkin. HTTP cookie-leri de REST sheklewlerin buzadı, sebebi olar brauzerdiń qosımsha jaǵdayı menen sinxronlanbay qalıwı múmkin, bul olardı isenimsiz etedi; olar sonday-aq jekelik hám qáwipsizlik ushın qáwip tuwdıratuǵın túsiniksiz maǵlıwmatlardı saqlaydı.

## Arxitekturalıq qásiyetler
REST arxitekturalıq stili tarmaqqa tiykarlanǵan qosımshalar, atap aytqanda klient-server qosımshaları ushın joybarlanǵan. Biraq bunnan da kóbirek, ol Internet kóleminde paydalanıw ushın joybarlanǵan, sonlıqtan paydalanıwshı agenti (klient) hám baslanǵısh server arasındaǵı baylanıs keń kólemde engiziwdi jeńillestiriw ushın ilajı barınsha bos bolıwı kerek.

Klient penen serverdiń kúshli ajıratılıwı hám bir tiples adreslew protokolı arqalı informaciyanı tekstlik túrde uzatıw vebtiń talapların qanaatlandırıw ushın tiykar jarattı: keńeytiw imkaniyatı, anarxiyalıq keńeyiw hám komponentlerdiń ǵárezsiz jaylastırılıwı, úlken kólemdegi maǵlıwmatlardı uzatıw, hám kontent oqıwshıları, kontent avtorları hám baǵdarlamashılar ushın kiriw tosıǵınıń tómen bolıwı.

REST arxitekturalıq stiliniń sheklewleri tómendegi arxitekturalıq qásiyetlerge tásir etedi:

* Komponentler arasındaǵı óz-ara baylanıslardıń ónimdarlıǵı, bul paydalanıwshı sezetuǵın ónimdarlıqta hám tarmaq nátiyjeliliginde ústem faktor bolıwı múmkin;
* Kóp sandaǵı komponentlerdi hám komponentler arasındaǵı óz-ara baylanıslardı qollap-quwatlawǵa múmkinshilik beretuǵın Keńeyiw imkaniyatı;
* Birgelki interfeystiń Ápiwayılıǵı;
* Ózgerip baratırǵan mútájliklerdi qanaatlandırıw ushın komponentlerdiń Ózgeriwsheńligi (hátte qosımsha islep turǵanda da);
* Xızmet agentleri tárepinen komponentler arasındaǵı baylanıstıń Kóriniwsheńligi;
* Maǵlıwmatlar menen birge programma kodın kóshiriw arqalı komponentlerdiń Kóshiriwsheńligi;
* Komponentler, jalǵawshılar yamasa maǵlıwmatlardaǵı nasazlıqlar bolǵan jaǵdayda sistema dárejesinde nasazlıqqa qarsı turıwdaǵı Isenimlilik.

## Arxitekturalıq sheklewler
REST arxitekturalıq stili altı basshılıq etiwshi sheklewdi anıqlaydı. Bul sheklewler sistema arxitekturasına qollanılǵanda, ol ónimdarlıq, keńeyiw imkaniyatı, ápiwayılıq, ózgeriwsheńlik, kóriniwsheńlik, kóshiriwsheńlik hám isenimlilik sıyaqlı unamlı funkcional emes qásiyetlerge iye boladı.

Rásmiy REST sheklewleri tómendegilerden ibarat:

* Klient/Server – Klientler serverlerden jaqsı anıqlanǵan interfeys arqalı ajıratılǵan.
* Statussız  – Belgili bir klient «tınısh» jaǵdayında bolǵanda server yadın paydalanbaydı.
* Kesh – Juwaplar olardıń keshleniw imkaniyatın kórsetedi.
* Birgelki interfeys
* Qatlamlı sistema – Klient ádette tikkeley sońǵı serverge yamasa joldaǵı aralıq shınjırǵa jalǵanǵanlıǵın ayta almaydı.
* Talap boyınsha kod (qosımsha) – Serverler standart virtual mashina ishinde orınlanıwı múmkin bolǵan logikanı klientke uzatıw arqalı klienttiń funkcionallıǵın waqtınsha keńeytiwge yamasa sazlawǵa qábiletli.

### Birgelki interfeys
Birgelki interfeys sheklewi hár qanday RESTful sistemasın joybarlaw ushın tiykarǵı bolıp esaplanadı. Ol arxitekturanı ápiwayılastıradı hám ajıratadı, bul hárbir bólektiń óz aldına rawajlanıwına imkaniyat beredi. Usı birgelki interfeys ushın tórt sheklew bar:

* Sorawlarda resurstı identifikaciyalaw: Jeke resurslar sorawlarda URI-lardı paydalanıw arqalı identifikaciyalanadı. Resurslardıń ózleri konceptuallıq jaqtan klientke qaytarılatuǵın kórinislerden bólek. Mısalı, server óziniń maǵlıwmatlar bazasınan maǵlıwmatlardı HTML, XML yamasa JSON túrinde jiberiwi múmkin — bulardıń hesh biri serverdiń ishki kórinisi emes.
* Kórinisler arqalı resurstı basqarıw: Klient resurstıń kórinisin, sonıń ishinde qosımsha metamaǵlıwmatlardı uslap turǵanda, ol resurstıń jaǵdayın ózgertiw yamasa óshiriw ushın jetkilikli informaciyaǵa iye boladı.
* Óz-ózin sıpatlaytuǵın xabarlar: Hárbir xabar onı qalay qayta islewdi táriyiplew ushın jetkilikli informaciyanı óz ishine aladı. Mısalı, qaysı parserdi shaqırıw kerek ekenligi media túri arqalı kórsetiliwi múmkin.
* Qosımsha jaǵdayınıń dvigateli sıpatında gipermedia (HATEOAS): REST qosımshası ushın baslanǵısh URI-ǵa kirgennen keyin — bul adamnıń veb-sayttıń bas betine kiriwine uqsas — REST klienti keyin ózine kerek bolǵan barlıq qoljetimli resurslardı dinamikalıq túrde tabıw ushın server tárepinen usınılǵan siltemelerdi paydalana alıwı kerek. Kiriw dawam etkende, server házirgi waqıtta qoljetimli bolǵan basqa resurslarǵa gipersiletemelerdi óz ishine alǵan tekst penen juwap beredi. Klienttiń server strukturası haqqındaǵı informaciya menen qattı kodlanǵan bolıwına zárúrlik joq.

## Klassifikaciya modelleri
REST API-lerin olardıń REST joybarlawınıń hár túrli principlerine sáykesligi boyınsha klassifikaciyalawǵa járdem beriw ushın bir neshe modeller islep shıǵılǵan, mısalı:

* Richardson jetilisiw modeli
* HTTP tiykarındaǵı API-lar klassifikaciyası
* W S3 jetilisiw modeli

## Derekler

__BÖLİDİMÖNDEMEW__