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