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): თითოეული შეტყობინება შეიცავს საკმარის ინფორმაციას, რათა მიმღებმა გაიგოს, როგორ უნდა დამუშავდეს იგი. გამოიყენება სტანდარტული HTTP სათაურები.
- ჰიპერმედია როგორც პროგრამის მდგომარეობის ძრავი (HATEOAS): კლიენტი უნდა იპოვოს ინფორმაცია ხელმისაწვდომი მოქმედებების და შესაძლო გადასვლების შესახებ ჰიპერმედია ბმულებიდან, რომლებიც შედის რესურსების წარმოდგენებში.
- შრეებადობა (Layered System): სისტემა შეიძლება იყოს ორგანიზებული შუამავლური შრეებით (მაგალითად, პროქსი, კეშები, шлюზები), რომლებიც გავლენას ახდენენ მოთხოვნებზე და პასუხებზე. კლიენტი არ იცის, მუშაობს თუ არა იგი პირდაპირ საბოლოო სერვერთან ან შუამავლური შრეებით.
- კოდზე მოთხოვნის კოდი (Code on Demand - არჩევით): სერვერი დროებით შეიძლება გააფართოოს კლიენტის ფუნქციონალობა გადასცემით ამუშავებადი კოდს (მაგალითად, JavaScript). ეს პრინციპი არ არის აუცილებელი REST-ის შესაბამისობისთვის.