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