Sobes.tech
Middle

Ի՞նչ են REST-ի սկզբունքները։

sobes.tech AI

Պատասխան AI-ից

REST-ի հետևյալ սկզբունքներն են.

  • Կլիենտ-սերվերական ճարտարապետություն (Client-Server): Կլիենտը (ծառայության սպառողը) և սերվերը (ծառայության մատակարարը) բաժանված են պարտականություններով: Սա նպաստում է կլիենտային կոդի փոխադրելիությանը և սերվերի ընդարձակելիությանը:
  • Կարգավիճակի բացակայություն (Stateless): Յուրաքանչյուր հարցում, որը գալիս է կլիենտից, պետք է պարունակի բոլոր անհրաժեշտ տեղեկությունները սերվերին՝ այդ հարցումը կատարելիս: Սերվերը չի պահում կլիենտի վիճակը հարցումների միջև:
  • Էներգիայի պահպանում (Cacheable): Սերվերը կարող է հստակ նշել, արդյոք տվյալները կարող են պահվել կեշում՝ կլիենտային կամ միջնորդական շերտում: Սա բարելավում է արտադրողականությունը և ընդարձակելիությունը:
  • Միասնական ինտերֆեյս (Uniform Interface): Ամենակարևոր սկզբունքը, որը բաղկացած է չորս ենթաբաժիններից:
    • Ռեսուրսների նույնականացում (Identification of resources): Ռեսուրսները նույնականացվում են յուրահատուկ URI-ներով:
    • Ռեսուրսների կառավարում ներկայացումներով (Manipulation of resources through representations): Կլիենտը փոխազդում է ռեսուրսների հետ՝ ստանալով նրանց ներկայացումները (օրինակ՝ JSON կամ XML ձևաչափով) և ուղարկելով նոր ներկայացումներ՝ ռեսուրսի վիճակը փոխելու համար:
    • Ինքնաբացառիկ հաղորդագրություններ (Self-descriptive messages): Յուրաքանչյուր հաղորդագրություն պարունակում է բավականին տեղեկություններ՝ որպեսզի ստացողը հասկանա, ինչպես այն մշակել:
    • Հիպերմեդիա որպես ծրագրի վիճակի շարժիչ (HATEOAS): Կլիենտը պետք է գտնի հասանելի գործողությունների և հնարավոր անցումների մասին տեղեկատվությունը՝ հիպերմեդիա հղումներից, որոնք ներառված են ռեսուրսների ներկայացումներում:
  • Շերտավորված համակարգ (Layered System): Սիստեմը կարող է կազմված լինել միջնորդական շերտերից (օրինակ՝ պրոքսի, կեշեր, шлюզներ), որոնց միջոցով անցնում են հարցումները և պատասխանները: Կլիենտը չի իմանում, թե արդյոք նա անմիջապես աշխատում է վերջնական սերվերի հետ կամ միջնորդական շերտերով:
  • Կոդի հարցում պահանջելու սկզբունքը (Code on Demand - ընտրովի): Սերվերը կարող է ժամանակավոր ընդլայնել կլիենտի գործառույթները՝ փոխանցելով գործարկվող կոդ (օրինակ՝ JavaScript): Այս սկզբունքը պարտադիր չէ, որ համապատասխանի REST-ին։