HATEOAS (англ. Hypermedia as the Engine of Application State, "Гіпермедіа як рушій застосункового стану") — обмеження на архітектуру мережевих REST-застосунків, що вирізняє її серед інших архітектур мережевих застосунків.
З HATEOAS клієнт взаємодіє з мережевим застосунком, сервери якого динамічно надають інформацію через гіпермедіа. Клієнт REST не потребує попередніх знань про те, як взаємодіяти з застосунком або сервером поза загальним розумінням гіпермедіа.
На відміну від цього, клієнти та сервери з CORBA взаємодіють через фіксований інтерфейс поширений через документацію або мовою опису інтерфейсу (МОІ).
Завдяки HATEOAS, клієнт відв'язується від сервера, що дозволяє серверу розвиватися незалежно.
Приклад
Клієнт REST взаємодіє з REST застосунком через просту фіксовану URL-адресу. Всі майбутні дії, які може здійснити клієнт, описані в представленні ресурсу повернутому із сервера. Типи медіа, які використовуються в отриманому описі ресурсу або можливі зв'язки між посиланнями - стандартизовані. Клієнт переходить між станами застосунку, обираючи посилання у представленні ресурсу або маніпулюючи представленням іншими способами, які надає його тип медіа. Таким чином, RESTful взаємодія обумовлена гіпермедією, а не попередньо описаною документацією.
Наприклад, цей GET запит отримує ресурс облікового запису, запитуючи деталі в представленні JSON:
GET /accounts/12345/ HTTP/1.1 Host: bank.example.com Accept: application/vnd.acme.account+json ...
Відповідь сервера:
HTTP/1.1 200 OK Content-Type: application/vnd.acme.account+json Content-Length: ... { "account": { "account_number": 12345, "balance": { "currency": "usd", "value": 100.00 }, "links": { "deposit": "/accounts/12345/deposit", "withdraw": "/accounts/12345/withdraw", "transfer": "/accounts/12345/transfer", "close": "/accounts/12345/close" } } }
Відповідь містить всі можливі подальші посилання: внести, зняти, переказати кошти або закрити рахунок.
Коли матиме місце перевитрата коштів, з доступних опцій буде лише 'внесення коштів' (deposit):
HTTP/1.1 200 OK Content-Type: application/vnd.acme.account+json Content-Length: ... { "account": { "account_number": 12345, "balance": { "currency": "usd", "value": -25.00 }, "links": { "deposit": "/accounts/12345/deposit" } } }
Зараз доступне лише одне посилання: внести більше грошей. У поточному "'стані' інші посилання недоступні. Звідси термін "Двигун стану застосунку". Можливі дії залежать від стану ресурсу.
Клієнту не потрібно розуміти кожен тип медіа та механізм зв'язку, запропонований сервером. Здатність розуміти нові типи медіа може бути набута клієнтом під час виконання запиту до сервера.
Витоки
Обмеження HATEOAS є невід'ємною частиною "єдиного інтерфейсу" REST, визначеного в докторській дисертації Роя Філдінга. Філдінг далі описав цю концепцію у своєму блозі.
Філдінг пояснює, що мета суворості цього та інших обмежень REST - "розробка програмного забезпечення в масштабах десятиліть: кожна деталь покликана сприяти довговічності програмного забезпечення та незалежній еволюції. Багато обмежень прямо протиставляються короткотерміновій ефективності. На жаль, люди досить хороші в короткостроковому дизайні застосунків і зазвичай жахливі при довгостроковому дизайні."
Посилання
- Fielding, Roy T. (20 жовтня 2008). . Архів оригіналу за 18 березня 2010. Процитовано 20 травня 2010.
- . Архів оригіналу за 31 січня 2020. Процитовано 24 січня 2020.
- Fielding, Roy Thomas (2000). . Architectural Styles and the Design of Network-based Software Architectures (PhD). University of California, Irvine. Архів оригіналу за 22 січня 2020. Процитовано 24 січня 2020.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
HATEOAS angl Hypermedia as the Engine of Application State Gipermedia yak rushij zastosunkovogo stanu obmezhennya na arhitekturu merezhevih REST zastosunkiv sho viriznyaye yiyi sered inshih arhitektur merezhevih zastosunkiv Rest from get to hateoas 25 728 Z HATEOAS kliyent vzayemodiye z merezhevim zastosunkom serveri yakogo dinamichno nadayut informaciyu cherez gipermedia Kliyent REST ne potrebuye poperednih znan pro te yak vzayemodiyati z zastosunkom abo serverom poza zagalnim rozuminnyam gipermedia Na vidminu vid cogo kliyenti ta serveri z CORBA vzayemodiyut cherez fiksovanij interfejs poshirenij cherez dokumentaciyu abo movoyu opisu interfejsu MOI Zavdyaki HATEOAS kliyent vidv yazuyetsya vid servera sho dozvolyaye serveru rozvivatisya nezalezhno PrikladKliyent REST vzayemodiye z REST zastosunkom cherez prostu fiksovanu URL adresu Vsi majbutni diyi yaki mozhe zdijsniti kliyent opisani v predstavlenni resursu povernutomu iz servera Tipi media yaki vikoristovuyutsya v otrimanomu opisi resursu abo mozhlivi zv yazki mizh posilannyami standartizovani Kliyent perehodit mizh stanami zastosunku obirayuchi posilannya u predstavlenni resursu abo manipulyuyuchi predstavlennyam inshimi sposobami yaki nadaye jogo tip media Takim chinom RESTful vzayemodiya obumovlena gipermediyeyu a ne poperedno opisanoyu dokumentaciyeyu Napriklad cej GET zapit otrimuye resurs oblikovogo zapisu zapituyuchi detali v predstavlenni JSON GET accounts 12345 HTTP 1 1 Host bank example com Accept application vnd acme account json Vidpovid servera HTTP 1 1 200 OK Content Type application vnd acme account json Content Length account account number 12345 balance currency usd value 100 00 links deposit accounts 12345 deposit withdraw accounts 12345 withdraw transfer accounts 12345 transfer close accounts 12345 close Vidpovid mistit vsi mozhlivi podalshi posilannya vnesti znyati perekazati koshti abo zakriti rahunok Koli matime misce perevitrata koshtiv z dostupnih opcij bude lishe vnesennya koshtiv deposit HTTP 1 1 200 OK Content Type application vnd acme account json Content Length account account number 12345 balance currency usd value 25 00 links deposit accounts 12345 deposit Zaraz dostupne lishe odne posilannya vnesti bilshe groshej U potochnomu stani inshi posilannya nedostupni Zvidsi termin Dvigun stanu zastosunku Mozhlivi diyi zalezhat vid stanu resursu Kliyentu ne potribno rozumiti kozhen tip media ta mehanizm zv yazku zaproponovanij serverom Zdatnist rozumiti novi tipi media mozhe buti nabuta kliyentom pid chas vikonannya zapitu do servera VitokiObmezhennya HATEOAS ye nevid yemnoyu chastinoyu yedinogo interfejsu REST viznachenogo v doktorskij disertaciyi Roya Fildinga Filding dali opisav cyu koncepciyu u svoyemu blozi Filding poyasnyuye sho meta suvorosti cogo ta inshih obmezhen REST rozrobka programnogo zabezpechennya v masshtabah desyatilit kozhna detal poklikana spriyati dovgovichnosti programnogo zabezpechennya ta nezalezhnij evolyuciyi Bagato obmezhen pryamo protistavlyayutsya korotkoterminovij efektivnosti Na zhal lyudi dosit horoshi v korotkostrokovomu dizajni zastosunkiv i zazvichaj zhahlivi pri dovgostrokovomu dizajni PosilannyaFielding Roy T 20 zhovtnya 2008 Arhiv originalu za 18 bereznya 2010 Procitovano 20 travnya 2010 Arhiv originalu za 31 sichnya 2020 Procitovano 24 sichnya 2020 Fielding Roy Thomas 2000 Architectural Styles and the Design of Network based Software Architectures PhD University of California Irvine Arhiv originalu za 22 sichnya 2020 Procitovano 24 sichnya 2020