Кіріспе

Клиент-серверлік қолданбалар үшін архитектуралық стиль

REST (representational state transfer) – Дүниежүзілік Тордың (World Wide Web) архитектурасын жобалау және дамытуды басшылыққа алу үшін жасалған бағдарламалық қамтамасыз ету архитектуралық стилі. REST – Интернет сияқты, кең ауқымды гипермедиа жүйесінің архитектурасының қалай жұмыс істеуі керектігін анықтайтын шектеулер жиынтығын белгілейді. REST архитектуралық стилі біртекті интерфейстерге, компоненттердің тәуелсіз орналасуына, олардың арасындағы өзара әрекеттесудің кеңею мүмкіндігіне, сондай-ақ пайдаланушы сезетін кешігуді азайту, қауіпсіздікті күшейту және ескі жүйелерді жасыру үшін кэштеуді қолдауға бағытталған қабатты архитектура құруға ерекше мән береді. REST бағдарламалық жасақтама индустриясының барлық жерінде күйсіз, сенімді веб-қосымшаларын жасау үшін пайдаланылып келеді. REST архитектуралық шектеулеріне сәйкес келетін қосымшаны бейресми түрде RESTful деп сипаттауға болады, бірақ бұл термин көбінесе HTTP негізіндегі API-лерді жобалаумен және ресурстың қайырлымдарына (HTTP әдістері) қатысты ең жақсы тәжірибелермен байланыстырылады, бірақ бастапқыда қалыптастырылған REST-тен көп қатысы жоқ және көбінесе осы тұжырымдамаға қайшы келеді.

Принцип

Өкілдік күйді беру термині 2000 жылы компьютерлік ғалым Рой Филдлинг өзінің докторлық диссертациясында енгізіліп, анықталды. Бұл сервердің ресурстың бейнелеуін қайтаруы (қазіргі кезде бұл көбінесе HTML, XML немесе JSON құжаты болады) және осы ресурста жүйе күйін өзгертуге мүмкіндік беретін гипермедиа сілтемелері болады дегенді білдіреді. Кез келген сұранысқа жауап ретінде де ресурстың бейнелеуі алынады, және осылай жалғаса береді. Маңызды салдары – бастапқы сұралған ресурстың идентификаторы ғана белгілі болуы керек, ал қалған идентификаторлар жүйе ішінде табылады. Бұл идентификаторлар клиентке ескертілмей өзгертілуі мүмкін, сондай-ақ клиент пен сервер арасындағы байланыс шала байланысқа негізделеді.

Тарих

Веб 1993–1994 жылдары күнделікті қолдануға енді, жалпы қолдануға арналған веб-сайттар қолжетімді бола бастаған кезде. Ол кезде Веб архитектурасының толық емес сипаттамасы ғана болды және индустрияда Веб интерфейс протоколдары үшін бір стандартқа келісуге қысым болды. Мысалы, проксилерді қолдау үшін коммуникация протоколына (HTTP) бірнеше тәжірибелік кеңейтулер қосылды және тағы да кеңейтулер ұсынылып жатты, бірақ бұл өзгерістердің әсерін бағалау үшін ресми Веб архитектурасы қажет еді. W3C және IETF жұмыс топтары бірлесіп, Вебтің үш негізгі стандартының ресми сипаттамаларын жасау жөнінде жұмыс бастады: URI, HTTP және HTML. Рой Филдинг осы стандарттарды жасауға қатысты (әсіресе HTTP 1.0 және 1.1, URI), және келесі алты жыл ішінде ол REST архитектуралық стилін жасады, оның Веб протоколдарының стандарттарына қатысты шектеулерін сынап, архитектуралық жақсартуларды анықтау және архитектуралық үйлесімсіздіктерді анықтау құралы ретінде пайдаланды. Филдинг REST-ті 2000 жылы UC Irvine-де "Архитектуралық стильдер және желілік бағдарламалық қамтамасыз ету архитектурасының дизайны" атты PhD диссертациясында анықтады. REST архитектуралық стилін құру үшін Филдинг әлемдік желіге негізделген қосымшаны құру кезінде қолданылатын талаптарды анықтады, мысалы, жаһандық қабылдауды қамтамасыз ету үшін төмен кіру кедергісінің қажеттігі. Ол сондай-ақ желілік қосымшалар үшін көптеген қолданыстағы архитектуралық стильдерді зерттеп, кэштеу және клиент-сервер мүмкіндіктері сияқты басқа стильдермен ортақ ерекшеліктерді және ресурстар концепциясы сияқты REST-ке тән ерекшеліктерді анықтады. Филдинг қазіргі іске асырудың қолданыстағы архитектурасын жіктеуге және Вебтің мінез-құлқы мен өнімділік талаптарына қандай аспектілерді басты деп қарастыру керектігін анықтауға тырысты. Архитектуралық стильдер өзінің мәні бойынша кез келген нақты іске асырудан тәуелсіз, ал REST Веб стандарттарын дамытудың бір бөлігі ретінде құрылған болса да, Вебтің іске асырылуы REST архитектуралық стилінің барлық шектеулеріне сәйкес келмейді. Үйлесімсіздіктер білімсіздік немесе қадағалаудың нәтижесі болуы мүмкін, бірақ REST архитектуралық стилінің болуы олардың стандартталуынан бұрын анықталуы мүмкін екенін білдіреді. Мысалы, Филдинг сессиялық ақпаратты URI-ге ендіруді REST шектеулерін бұзу ретінде анықтады, бұл ортақ кэш және сервердің кеңейтілуіне теріс әсер етуі мүмкін. HTTP cookie файлдары да REST шектеулерін бұзады, өйткені олар браузердің қолданба күйімен синхронды бола алмайды, оларды сенімсіз етеді; сонымен қатар олар құпиялылық пен қауіпсіздікке қатысты алаңдатуға болатын түсініксіз деректерді қамтиды.

Бірыңғай интерфейс

Бірыңғай интерфейс талабы кез келген RESTful жүйенің құрылымы үшін негізгі болып табылады.