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