Middle
Ποια είναι ταPrinciples του REST;
sobes.tech AI
Απάντηση από AI
Υπάρχουν οι ακόλουθες αρχές του REST:
- Αρχιτεκτονική πελάτη-εξυπηρετητή: Διαχωρισμός των ευθυνών μεταξύ του πελάτη (καταναλωτής της υπηρεσίας) και του διακομιστή (προμηθευτής της υπηρεσίας). Αυτό προάγει τη φορητότητα του κώδικα του πελάτη και την κλιμάκωση του διακομιστή.
- Χωρίς κατάσταση (Stateless): Κάθε αίτημα από τον πελάτη προς τον διακομιστή πρέπει να περιέχει όλες τις πληροφορίες που χρειάζεται ο διακομιστής για να το επεξεργαστεί. Ο διακομιστής δεν διατηρεί κατάσταση του πελάτη μεταξύ των αιτημάτων.
- Μπορεί να αποθηκευτεί στην cache: Ο διακομιστής μπορεί να υποδείξει ρητά αν τα δεδομένα μπορούν να αποθηκευτούν στην cache από τον πελάτη ή από ενδιάμεσα στρώματα. Αυτό βελτιώνει την απόδοση και την κλιμάκωση.
- Ομοιόμορφη διεπαφή: Ο πιο σημαντικός κανόνας, που περιλαμβάνει τέσσερις υπο-κανόνες:
- Ταυτοποίηση πόρων: Οι πόροι ταυτοποιούνται με μοναδικά URI.
- Διαχείριση πόρων μέσω αναπαραστάσεων: Ο πελάτης αλληλεπιδρά με τους πόρους λαμβάνοντας τις αναπαραστάσεις τους (π.χ. σε μορφή JSON ή XML) και στέλνοντας νέες αναπαραστάσεις για την αλλαγή της κατάστασης του πόρου.
- Μηνύματα αυτοπεριγραφόμενα: Κάθε μήνυμα περιέχει αρκετές πληροφορίες ώστε ο παραλήπτης να καταλάβει πώς να το επεξεργαστεί. Χρησιμοποιούνται τυπικές κεφαλίδες HTTP.
- Hypermedia ως ο κινητήρας της κατάστασης της εφαρμογής (HATEOAS): Ο πελάτης πρέπει να βρίσκει πληροφορίες σχετικά με τις διαθέσιμες ενέργειες και τις πιθανές μεταβάσεις μεταξύ των καταστάσεων της εφαρμογής από υπερμέσα συνδέσμους, ενσωματωμένους στις αναπαραστάσεις πόρων.
- Πολυεπίπεδο σύστημα: Το σύστημα μπορεί να οργανωθεί με τη χρήση ενδιάμεσων επιπέδων (π.χ. proxy, cache, πύλες), μέσω των οποίων περνούν τα αιτήματα και οι απαντήσεις. Ο πελάτης δεν γνωρίζει αν επικοινωνεί απευθείας με τον τελικό διακομιστή ή μέσω ενδιάμεσων επιπέδων.
- Κώδικας κατόπιν αιτήματος (Code on Demand - προαιρετικό): Ο διακομιστής μπορεί προσωρινά να επεκτείνει τη λειτουργικότητα του πελάτη μεταδίδοντας εκτελέσιμο κώδικα (π.χ. JavaScript). Αυτός ο κανόνας είναι προαιρετικός για τη συμμόρφωση με το REST.