Αρχική σελίδα » Κωδικοποίηση » Τα βασικά του REST και του RESTful API Development

    Τα βασικά του REST και του RESTful API Development

    Οι προγραμματιστές του διαδικτύου συχνά μιλάνε Αρχές REST και αρχιτεκτονική RESTful data, καθώς είναι μια κρίσιμη πτυχή της σύγχρονης ανάπτυξης, αλλά μερικές φορές μπορεί να είναι απίστευτα συγκεχυμένη. Το REST δεν είναι τεχνολογία από μόνη της, αλλά μάλλον μια μέθοδος δημιουργίας API με ορισμένες οργανωτικές αρχές. Αυτές οι αρχές είναι να καθοδηγήσουν τους προγραμματιστές και να δημιουργήσουν ένα πιο καθολικό περιβάλλον για την επεξεργασία των αιτήσεων API.

    Σε αυτή τη θέση, θα ήθελα να εξηγήσω τις RESTful αναπτυξιακές πρακτικές από την άποψη των πουλιών. Θέλω να ασχοληθώ ο τι αντί για το πως. Παρόλο που θα αγγίξω και τις δύο περιοχές, αυτή η ανάρτηση γίνεται για όποιον είναι στην ανάπτυξη ιστού, αλλά απλά δεν μπορεί να κατανοήσει την έννοια των API REST.

    REST Για προγραμματιστές Web

    Το ακρωνύμιο REST αντιπροσωπεύει Μεταφραστική μεταβίβαση κράτους. Αυτό μπορεί να μοιάζει κάπως συγκεχυμένο και η καταχώρηση του wiki καθιστά ακόμα πιο συγκεχυμένη. Ωστόσο, είναι δυνατή η απλοποίηση της ορολογίας.

    Το REST είναι απλώς μια σειρά από τις κατευθυντήριες γραμμές και τα αρχιτεκτονικά στυλ που χρησιμοποιούνται για τη μετάδοση δεδομένων. Συνήθως εφαρμόζεται σε εφαρμογές ιστού, αλλά μπορεί επίσης να μεταφέρει δεδομένα στο λογισμικό.

    Το API αρκτικόλεξο σημαίνει Διασύνδεση Προγραμματισμού Εφαρμογών, οι οποίες είναι μέθοδοι σύνδεση με άλλες βιβλιοθήκες ή εφαρμογές. Τα Windows έχουν πολλά API και το Twitter διαθέτει επίσης ένα API ιστού, αν και εκτελούν διαφορετικές εργασίες με διαφορετικούς στόχους.

    Συνδυάζοντας όλα μαζί, τα RESTful APIs είναι API που ακολουθούν την αρχιτεκτονική REST.

    Τι ακριβώς είναι η αρχιτεκτονική REST?

    Εδώ είναι δύσκολο να καθορίσουμε τις λεπτομέρειες. Ωστόσο, υπάρχουν ορισμένες αρχιτεκτονικές σταθερές, όπως:

    • Συνοχή σε ολόκληρο το API
    • Άπαχη ύπαρξη, δηλαδή δεν υπάρχουν συνεδρίες διακομιστή
    • Χρήση του Κωδικοί κατάστασης HTTP όπου ενδείκνυται
    • Χρήση του Τα τελικά σημεία URL με μια λογική ιεραρχία
    • Έκδοση στη διεύθυνση URL αντί σε κεφαλίδες HTTP

    Δεν υπάρχουν υπερβολικά συγκεκριμένες οδηγίες, όπως η προδιαγραφή W3C HTML5, η οποία θα μπορούσε να οδηγήσει σε σύγχυση και ένα αίσθημα αβεβαιότητας γύρω από την ορολογία REST.

    Επίσης, η παραπάνω λίστα δεν πρέπει να θεωρούνται σκληροί και γρήγοροι κανόνες, παρόλο που είναι αληθινά για τα περισσότερα σύγχρονα RESTful API.

    ΕΙΚΟΝΑ: restful-api-design.readthedocs.io

    Το REST είναι a ελαφριά μεθοδολογία που το καθιστά ιδανικό για δεδομένα HTTP. Αυτός είναι ο λόγος για τον οποίο το REST έγινε τόσο δημοφιλές στον ιστό και γιατί θεωρείται ευρέως ως η καλύτερη επιλογή για την ανάπτυξη API.

    Όπως το βάζει ο Vinay Sahni, “ένα API είναι το UI του προγραμματιστή.” Τα πάντα θα πρέπει να είναι εύκολα στη χρήση και να παρέχουν μεγάλη εμπειρία χρήστη. Τα RESTful API αποσκοπούν να κάνουν ακριβώς αυτό.

    Λήψεις κλειδιών για τα πιο ελκυστικά API

    Αυτές οι συμβουλές βρίσκονται στο πλαίσιο των API αυστηρά για εφαρμογές ιστού. Αυτό σημαίνει ότι HTTP είναι μια απαίτηση, και αυτό συχνά σημαίνει ότι τα δεδομένα API φιλοξενούνται σε έναν εξωτερικό διακομιστή. Ας δούμε πώς λειτουργούν τα RESTful API από την πλευρά του χρήστη API.

    Ο χρήστης API είναι ο προγραμματιστής ιστού ο οποίος μπορεί να δημιουργήσει μια δέσμη ενεργειών που συνδέεται σε έναν εξωτερικό διακομιστή API και μετά τα απαραίτητα δεδομένα διαβιβάζονται μέσω HTTP. Ο προγραμματιστής μπορεί στη συνέχεια να εμφανίσει δεδομένα στην ιστοσελίδα του χωρίς να έχει προσωπική πρόσβαση στον εξωτερικό διακομιστή (όπως το τράβηγμα δεδομένων Twitter).

    Σε γενικές γραμμές, υπάρχουν τέσσερις εντολές συνηθισμένος πρόσβαση σε RESTful API:

    1. ΠΑΙΡΝΩ για την ανάκτηση ενός αντικειμένου
    2. ΘΕΣΗ για τη δημιουργία ενός νέου αντικειμένου
    3. ΒΑΖΩ για την τροποποίηση ή την αντικατάσταση ενός αντικειμένου
    4. ΔΙΑΓΡΑΦΩ για την αφαίρεση ενός αντικειμένου

    Κάθε μία από αυτές τις μεθόδους πρέπει να είναι που πέρασε με την κλήση API για να πείτε στο διακομιστή τι να κάνει.

    Η συντριπτική πλειονότητα των API ιστού επιτρέψτε μόνο ΠΑΙΡΝΩ αιτήσεων για να τραβήξετε δεδομένα έξω από έναν εξωτερικό διακομιστή. Ο έλεγχος ταυτότητας είναι προαιρετικός, αλλά σίγουρα μια καλή ιδέα όταν επιτρέπετε δυνητικά καταστρεπτικές εντολές όπως ΒΑΖΩ ή ΔΙΑΓΡΑΦΩ.

    Ωστόσο, δεν υπάρχουν πολλά RESTful API ακόμη και σε αυτό το σημείο. Εξετάστε το Pokéapi, το οποίο είναι μια ελεύθερη βάση δεδομένων API Pokémon. Είναι ανοικτό για το κοινό με αξιοπρεπή περιορισμό του ρυθμού (περιορίζοντας τους χρήστες σε έναν ορισμένο αριθμό αιτήσεων API σε μια χρονική περίοδο), αλλά επιτρέπει μόνο ΠΑΙΡΝΩ για την πρόσβαση σε πόρους. Αυτό μπορεί να ονομάζεται συνοπτικά a API μόνο για κατανάλωση.

    Τύποι επιστροφής είναι επίσης σημαντικές και πρέπει διατηρούν την ομοιογένεια για όλους τους πόρους. Το JSON είναι ένας δημοφιλής τύπος επιστροφής με ηλεκτρονικές προδιαγραφές που εξηγούν τις σωστές δομές δεδομένων.

    Χρησιμοποιούνται τα πιο απλά API ουσιαστικά για αντικείμενα API, και ρήματα για την εκτέλεση ενεργειών σε αυτά τα αντικείμενα. Ο έλεγχος ταυτότητας μπορεί να είναι μέρος αυτού, ο περιορισμός του ποσοστού μπορεί επίσης να είναι μέρος αυτού. Αλλά ένα πολύ απλό API μπορεί να πάρει χωρίς πολύ ανησυχία για τους περιορισμούς των χρηστών.

    Πρόσβαση σε πόρους API

    Τα δημόσια API είναι συνήθως προσβάσιμες από άμεσες διευθύνσεις ιστότοπου. Αυτό σημαίνει η δομή της διεύθυνσης URL είναι σημαντική, και θα πρέπει να χρησιμοποιείται μόνο για αιτήματα API.

    Ορισμένες διευθύνσεις URL μπορούν να περιλαμβάνουν έναν κατάλογο προθέματος όπως / v2 / για μια ενημερωμένη έκδοση 2 ενός προηγούμενου API. Αυτό είναι κοινό για προγραμματιστές που δεν θέλουν να υποτιμήσουν το API του 1.x, αλλά εξακολουθούν να θέλουν να προσφέρουν τη νεώτερη δομή.

    Μου άρεσε πραγματικά αυτή η θέση που καλύπτει βασικές δομές διευθύνσεων URL και παραδείγματα από άλλες υπηρεσίες.

    Σημειώστε ότι το τελικό σημείο είναι τα δεδομένα επιστροφής θα αλλάξουν βασίζεται θεαματικά στην Μέθοδος HTTP. Για παράδειγμα, ΠΑΙΡΝΩ ανακτά το περιεχόμενο, ενώ ΘΕΣΗ δημιουργεί νέο περιεχόμενο. Το αίτημα θα μπορούσε να οδηγήσει στο ίδιο τελικό σημείο, αλλά το αποτέλεσμα θα μπορούσε να είναι πολύ διαφορετικό.

    ΕΙΚΟΝΑ: Τεκμηρίωση API Reddit

    Η εξέταση των παραδειγμάτων σε απευθείας σύνδεση μπορεί να σας βοηθήσει να κατανοήσετε καλύτερα τις έννοιες. Είδαμε ήδη το Pokeapi, αλλά εδώ υπάρχουν και άλλα παραδείγματα API πραγματικού κόσμου να δούμε:

    • Reddit API
    • GitHub API
    • API Flickr
    • Pinterest API

    Δημιουργώντας το δικό σας API

    Η διαδικασία κατασκευής του δικού σας API δεν πρέπει να ληφθεί ελαφρώς, αλλά δεν είναι τόσο περίπλοκο όσο νομίζετε. Παίρνει ένα κατανόηση των προτύπων σχεδιασμού API και βέλτιστων πρακτικών να οικοδομήσουμε κάτι πραγματικής αξίας.

    Κάθε API πρέπει συνδεθείτε στο διακομιστή σας για να επιστρέψετε δεδομένα κάποιου είδους. Όχι μόνο θα πρέπει να γράψετε κώδικα για να το κάνετε αυτό, αλλά πρέπει επίσης να μορφοποιήσετε τα δεδομένα επιστροφής. Άλλες πιθανές απαιτήσεις περιλαμβάνουν αυθεντικοποίηση και περιορισμό του ρυθμού, οπότε η οικοδόμηση ενός API σίγουρα δεν είναι για το αδύναμο της καρδιάς.

    Ας ρίξουμε μια ματιά μερικές βασικές αρχές της αρχιτεκτονικής API.

    Δημιουργία τελικών σημείων

    Μια πτυχή της ανάπτυξης API είναι δημιουργία τελικών σημείων. Πότε δημιουργώντας πόρους θέλετε να χρησιμοποιήσετε ουσιαστικά, όχι ρήματα. Αυτό σημαίνει ότι τα δεδομένα API θα πρέπει να επιστρέφουν ένα άτομο, έναν τόπο ή ένα πράγμα, συνήθως ένα πράγμα με συγκεκριμένα χαρακτηριστικά (για παράδειγμα ένα τιτίβισμα και όλα τα μεταδεδομένα του).

    Μπορεί να είναι δύσκολο να μάθεις τα ουσιαστικά ονόματα, αλλά είναι μια κρίσιμη πτυχή της ανάπτυξης του API. Η απλούστευση είναι καλύτερη όταν είναι δυνατόν.

    Μια μεγάλη συζήτηση είναι ενιαίος εναντίον του πληθυντικού ουσιαστικά. Εάν δημιουργούσατε ένα API Twitter μπορείτε να έχετε πρώτα την ομάδα αντικειμένων (δηλ. Τιτίβισμα), τότε το δεύτερο αντικείμενο αντικειμένου (δηλ. Το tweet ID).

     $ / tweet / 15032934882934 $ / tweets / 15032934882934 

    Σε αυτή την περίπτωση, θα υποστήριζα ότι η μοναδική φόρμα φαίνεται καλύτερα. Αυτό ισχύει ιδιαίτερα όταν επιστρέφεται μόνο ένας πόρος. Αλλά δεν υπάρχει τεκμηριωμένη 100% σωστή απάντηση, έτσι κάνουμε ό, τι ταιριάζει καλύτερα για το έργο σας.

    Ορίστε τύπο επιστροφής

    Μια άλλη σκέψη είναι επιστροφή δεδομένων τύπου. Οι περισσότεροι χρήστες του διαδικτύου αναμένουν περιεχόμενο JSON, οπότε είναι πιθανώς η καλύτερη επιλογή. Η XML είναι μια άλλη επιλογή αν θέλετε να προσφέρετε και τα δύο. Ωστόσο, ο JSON είναι ο βασικός τύπος επιστροφής API μεταξύ των προγραμματιστών ιστού.

    Υπάρχουν πολλά περισσότερα που πηγαίνουν στην ανάπτυξη API, γι 'αυτό προτείνουμε να παίζετε πρώτα με API. Με αυτόν τον τρόπο μπορείτε να δείτε πώς άλλοι προγραμματιστές χτίζουν τα API τους και ελπίζουμε ότι θα εξοικειωθείτε με τις τυπικές απαιτήσεις.

    Εάν ξεκινάτε μόνος σας, παρακαλώ σκεφτείτε να απομακρύνετε αυτά τα tut tutors:

    • REST API Tutorial Site
    • Γράφοντας ένα απλό API REST
    • Δημιουργώντας μια υπηρεσία RESTful Web

    Περαιτέρω Πόροι

    Ο καλύτερος τρόπος για να μάθετε την ανάπτυξη εφαρμογών ιστού είναι μέσω της πρακτικής. Η χορηγούμενη θεωρία αξίζει πάντα να μελετηθεί, διότι σας επιτρέπει να συζητάτε με τους προγραμματιστές και να κατανοείτε πώς λειτουργούν τα πράγματα.

    Αλλά ένα καλό μέρος για να ξεκινήσετε με την ανάπτυξη API είναι σύνδεση σε άλλα API πρώτα. Μάθετε τα βασικά των συνδέσεων από την πλευρά του πελάτη και από εκεί μπορείτε να προχωρήσετε στην ανάπτυξη API από την πλευρά του διακομιστή δημιουργώντας το δικό σας API από το μηδέν.

    Αν αυτό είναι ο στόχος σας, παρακαλούμε να λάβετε υπόψη τους ακόλουθους πόρους για να βοηθήσετε κατά μήκος του ταξιδιού σας.

    Βιβλία

    • REST API Design Rulebook
    • RESTful API Web
    • Ανανεωμένο Βιβλίο Υπηρεσιών Web
    • Ανεπιθύμητη REST: Ένας οδηγός για το σχεδιασμό του τέλειου API

    Άρθρα

    • Ένας οδηγός αρχαρίων για HTTP και REST
    • Δημιουργώντας ένα RESTful API
    • RESTful Οδηγός ονομάτων πόρων
    • Δημιουργία API REST χρησιμοποιώντας τη στοίβα MEAN