Sobes.tech
Junior

Ի՞նչ է REST-ը։

sobes.tech AI

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

REST (Representational State Transfer) — դա բաշխված համակարգեր կառուցելու համար ճարտարապետական ոճ է, որը հիմնականում օգտագործվում է վեբ ծառայությունների նախագծման ժամանակ: Այն հիմնված է սկզբունքների և սահմանափակումների վրա, որոնք որոշում են, թե ինչպես են վեբ ռեսուրսները փոխազդում միմյանց հետ:

REST-ի հիմնական սկզբունքները՝

  • Կլիենտ-սերվեր: Մշտական բաժանում՝ պատասխանատվությունների միջև:
  • Stateless (պետականության բացակայություն): Սերվերը չի պահում հաճախորդի վիճակի մասին տեղեկություններ՝ հարցումների միջև: Ամեն հարցում պարունակում է անհրաժեշտ բոլոր տեղեկությունները:
  • Cacheable (կեշավորելի): Հաճախորդները կարող են կեշավորել սերվերի պատասխանները՝ կատարողականությունը բարձրացնելու համար: Սերվերը հստակ նշում է, արդյոք կարելի է կեշավորել պատասխանները:
  • Layered System (շերտավոր համակարգ): Հաճախորդը կարող է փոխազդել միջնորդ շերտի հետ (օրինակ՝ պրոքսի, բալանսավորիչ), առանց դրա մասին իմանալու:
  • Code on Demand (կոդի պահանջով) - ընտրովի: Սերվերը կարող է փոխանցել գործարկվող կոդ հաճախորդին (օրինակ՝ JavaScript), ընդլայնելով հաճախորդի գործառույթները:
  • Uniform Interface (համամասն ինտերֆեյս): Ամենակարևոր սկզբունքը, որը ներառում է հետևյալ սահմանափակումները՝
    • ռեսուրսների նույնականացում (URI):
    • ռեսուրսների մանիպուլյացիա ներկայացումներով (մատուցումներ՝ տվյալների փոխանակում որոշակի ձևաչափով, օրինակ՝ JSON, XML):
    • ինքնաբուխ հաղորդագրություններ (հաղորդագրությունները պարունակում են անհրաժեշտ ամբողջ տեղեկատվությունը՝ հասկանալու համար):
    • HATEOAS (Hypermedia as the Engine of Application State): հաճախորդը անցնում է ծրագրի վիճակների միջև՝ օգտագործելով հիպերակղզիներ, որոնք պարունակվում են սերվերի պատասխաններում:

RESTful API — դա REST ոճի իրականացման ձև է վեբ ծառայությունների համար, որը օգտագործում է ստանդարտ HTTP մեթոդներ (GET, POST, PUT, DELETE) ռեսուրսների հետ աշխատելու համար:

// Օրինակ՝ HTTP մեթոդների օգտագործում RESTful API-ում
// Ռեսուրս ստանալ
// GET /api/products/1

// Ռեսուրս ստեղծել
// POST /api/products
// Body: { "name": "New Product", "price": 10.50 }

// Ռեսուրս թարմացնել
// PUT /api/products/1
// Body: { "name": "Updated Product", "price": 11.00 }

// Ռեսուրս ջնջել
// DELETE /api/products/1