Οδηγός RESTful Web Services: Τι είναι το REST API με Παράδειγμα
Τι είναι οι Restful Web Services;
Ξεκούραστες Υπηρεσίες Ιστού είναι μια ελαφριά, συντηρήσιμη και επεκτάσιμη υπηρεσία που βασίζεται στην αρχιτεκτονική REST. Restful Web Service, εκθέστε το API από την εφαρμογή σας με ασφαλή, ομοιόμορφο, ανιθαγενή τρόπο στον καλούντα πελάτη. Ο πελάτης που καλεί μπορεί να εκτελέσει προκαθορισμένες λειτουργίες χρησιμοποιώντας την υπηρεσία Restful. Το υποκείμενο πρωτόκολλο για το REST είναι το HTTP. Το REST σημαίνει μεταβίβαση αντιπροσωπευτικού κράτους.
Ξεκούραστα βασικά στοιχεία
Οι υπηρεσίες Ιστού REST έχουν κάνει πραγματικά πολύ δρόμο από την έναρξή τους. Το 2002, η κοινοπραξία Ιστού είχε εκδώσει τον ορισμό των υπηρεσιών web WSDL και SOAP. Αυτό διαμόρφωσε το πρότυπο του τρόπου με τον οποίο υλοποιούνται οι υπηρεσίες web.
Το 2004, η κοινοπραξία Ιστού κυκλοφόρησε επίσης τον ορισμό ενός πρόσθετου προτύπου που ονομάζεται RESTful. Τα τελευταία δύο χρόνια, αυτό το πρότυπο έχει γίνει αρκετά δημοφιλές. Και χρησιμοποιείται από πολλούς από τους δημοφιλείς ιστότοπους σε όλο τον κόσμο, όπως το Facebook και το Twitter.
Το REST είναι ένας τρόπος πρόσβασης σε πόρους που βρίσκονται σε ένα συγκεκριμένο περιβάλλον. Για παράδειγμα, θα μπορούσατε να έχετε έναν διακομιστή που θα μπορούσε να φιλοξενεί σημαντικά έγγραφα ή εικόνες ή βίντεο. Όλα αυτά αποτελούν παράδειγμα πόρων. Εάν ένας πελάτης, για παράδειγμα ένα πρόγραμμα περιήγησης ιστού χρειάζεται οποιονδήποτε από αυτούς τους πόρους, πρέπει να στείλει ένα αίτημα στον διακομιστή για πρόσβαση σε αυτούς τους πόρους. Τώρα οι υπηρεσίες REST ορίζουν έναν τρόπο για τον τρόπο πρόσβασης σε αυτούς τους πόρους.
Τα βασικά στοιχεία μιας υλοποίησης RESTful είναι τα εξής:
- Υποστηρικτικό υλικό – Το πρώτο βασικό στοιχείο είναι ο ίδιος ο πόρος. Ας υποθέσουμε ότι μια εφαρμογή Ιστού σε έναν διακομιστή έχει αρχεία πολλών υπαλλήλων. Ας υποθέσουμε ότι η διεύθυνση URL της εφαρμογής Ιστού είναι http://demo.guru99.com. Τώρα για να αποκτήσετε πρόσβαση σε έναν πόρο εγγραφής υπαλλήλου μέσω υπηρεσιών REST, μπορείτε να εκδώσετε την εντολή http://demo.guru99.com/employee/1 – Αυτή η εντολή λέει στον διακομιστή web να παράσχει τα στοιχεία του υπαλλήλου του οποίου ο αριθμός υπαλλήλου είναι 1.
- Request Verbs – Αυτά περιγράφουν τι θέλετε να κάνετε με τον πόρο. Ένα πρόγραμμα περιήγησης εκδίδει ένα ρήμα GET για να δώσει εντολή στο τελικό σημείο που θέλει να λάβει δεδομένα. Ωστόσο, υπάρχουν πολλά άλλα διαθέσιμα ρήματα, όπως ΑΝΑΡΤΗΣΗ, ΤΟΠΟΘΕΤΗΣΗ και ΔΙΑΓΡΑΦΗ. Έτσι στην περίπτωση του παραδείγματος http://demo.guru99.com/employee/1 , το πρόγραμμα περιήγησης ιστού εκδίδει πραγματικά ένα ρήμα GET επειδή θέλει να λάβει τα στοιχεία του αρχείου υπαλλήλου.
- Αίτηση κεφαλίδων – Αυτές είναι πρόσθετες οδηγίες που αποστέλλονται μαζί με το αίτημα. Αυτά μπορεί να καθορίσουν τον τύπο της απάντησης που απαιτείται ή τις λεπτομέρειες εξουσιοδότησης.
- Σώμα αιτήματος – Τα δεδομένα αποστέλλονται μαζί με το αίτημα. Τα δεδομένα συνήθως αποστέλλονται στο αίτημα όταν υποβάλλεται αίτημα POST στις υπηρεσίες web REST. Σε μια κλήση POST, ο πελάτης λέει στην πραγματικότητα στις υπηρεσίες web REST ότι θέλει να προσθέσει έναν πόρο στον διακομιστή. Ως εκ τούτου, το σώμα αιτήματος θα έχει τις λεπτομέρειες του πόρου που απαιτείται να προστεθεί στον διακομιστή.
- Σώμα ανταπόκρισης – Αυτό είναι το κύριο σώμα της απάντησης. Έτσι, στο παράδειγμά μας RESTful API, αν κάναμε ερώτημα στον διακομιστή ιστού μέσω του αιτήματος http://demo.guru99.com/employee/1 , ο διακομιστής Ιστού ενδέχεται να επιστρέψει ένα έγγραφο XML με όλα τα στοιχεία του υπαλλήλου στο σώμα απάντησης.
- Κωδικοί κατάστασης απόκρισης – Αυτοί οι κωδικοί είναι οι γενικοί κωδικοί που επιστρέφονται μαζί με την απάντηση από τον διακομιστή web. Ένα παράδειγμα είναι ο κωδικός 200 που συνήθως επιστρέφεται εάν δεν υπάρχει σφάλμα κατά την επιστροφή μιας απάντησης στον πελάτη.
Μέθοδοι ξεκούρασης
Το παρακάτω διάγραμμα δείχνει κυρίως όλα τα ρήματα (POST, GET, PUT και DELETE) και ένα παράδειγμα REST API του τι θα σημαίνουν.
Ας υποθέσουμε ότι έχουμε μια υπηρεσία web RESTful που ορίζεται στην τοποθεσία. http://demo.guru99.com/employee . Όταν ο πελάτης κάνει οποιοδήποτε αίτημα σε αυτήν την υπηρεσία web, μπορεί να καθορίσει οποιοδήποτε από τα κανονικά ρήματα HTTP των GET, POST, DELETE και PUT. Παρακάτω είναι τι θα συνέβαινε εάν τα αντίστοιχα ρήματα αποστέλλονταν από τον πελάτη.
- ΜΕΤΑ – Θα χρησιμοποιηθεί για τη δημιουργία νέου υπαλλήλου χρησιμοποιώντας την υπηρεσία web RESTful
- ΠΑΡΤΕ – Θα χρησιμοποιηθεί για τη λήψη μιας λίστας όλων των υπαλλήλων που χρησιμοποιούν την υπηρεσία web RESTful
- ΒΆΖΩ – Αυτό θα χρησιμοποιηθεί για την ενημέρωση όλων των υπαλλήλων που χρησιμοποιούν την υπηρεσία web RESTful
- ΔΙΑΓΡΑΦΗ – Θα χρησιμοποιηθεί για τη διαγραφή όλων των υπαλλήλων που χρησιμοποιούν τις υπηρεσίες RESTful
Ας ρίξουμε μια ματιά από την οπτική γωνία ενός μόνο δίσκου. Ας υποθέσουμε ότι υπήρχε αρχείο υπαλλήλου με αριθμό υπαλλήλου 1.
Οι παρακάτω ενέργειες θα έχουν την αντίστοιχη σημασία τους.
- ΜΕΤΑ – Αυτό δεν θα ισχύει, καθώς λαμβάνουμε δεδομένα του υπαλλήλου 1 που έχουν ήδη δημιουργηθεί.
- ΠΑΡΤΕ – Αυτό θα χρησιμοποιηθεί για τη λήψη των στοιχείων του υπαλλήλου με αριθμό υπαλλήλου ως 1 χρησιμοποιώντας την υπηρεσία web RESTful
- ΒΆΖΩ – Αυτό θα χρησιμοποιηθεί για την ενημέρωση των στοιχείων του υπαλλήλου με τον αριθμό υπαλλήλου ως 1 χρησιμοποιώντας την υπηρεσία web RESTful
- ΔΙΑΓΡΑΦΗ – Χρησιμοποιείται για τη διαγραφή των στοιχείων του υπαλλήλου με αριθμό Υπαλλήλου ως 1
Γιατί ξεκούραστο
Το Restful έγινε δημοφιλές κυρίως για τους ακόλουθους λόγους:
1. Ετερογενείς γλώσσες και περιβάλλοντα – Αυτός είναι ένας από τους θεμελιώδεις λόγους που είναι ο ίδιος με αυτόν που είδαμε SOAP επίσης.
- Επιτρέπει σε εφαρμογές Ιστού που είναι χτισμένες σε διάφορες γλώσσες προγραμματισμού να επικοινωνούν μεταξύ τους
- Με τη βοήθεια των υπηρεσιών Restful, αυτές οι εφαρμογές Ιστού μπορούν να βρίσκονται σε διαφορετικά περιβάλλοντα, μερικά θα μπορούσαν να είναι ενεργοποιημένα Windows, και άλλα θα μπορούσαν να είναι σε Linux.
Αλλά τελικά, ανεξάρτητα από το περιβάλλον, το τελικό αποτέλεσμα θα πρέπει να είναι πάντα το ίδιο ότι θα πρέπει να μπορούν να συνομιλούν μεταξύ τους. Οι ξεκούραστες υπηρεσίες web προσφέρουν αυτή την ευελιξία σε εφαρμογές που είναι κατασκευασμένες σε διάφορες γλώσσες προγραμματισμού και πλατφόρμες για να συνομιλούν μεταξύ τους.
Η παρακάτω εικόνα δίνει ένα παράδειγμα μιας εφαρμογής Ιστού που έχει την απαίτηση να μιλήσει με άλλες εφαρμογές όπως το Facebook, το Twitter και το Google.
Τώρα, εάν μια εφαρμογή πελάτη έπρεπε να συνεργαστεί με ιστότοπους όπως το Facebook, το Twitter, κ.λπ., πιθανότατα θα έπρεπε να γνωρίζουν ποια είναι η γλώσσα στην οποία είναι χτισμένα το Facebook, το Google και το Twitter, καθώς και σε ποια πλατφόρμα είναι κατασκευασμένα.
Με βάση αυτό, μπορούμε να γράψουμε τον κώδικα διεπαφής για την εφαρμογή web μας, αλλά αυτό θα μπορούσε να αποδειχθεί εφιάλτης.
Το Facebook, το Twitter και η Google εκθέτουν τη λειτουργικότητά τους με τη μορφή υπηρεσιών web Restful. Αυτό επιτρέπει σε οποιαδήποτε εφαρμογή πελάτη να καλεί αυτές τις υπηρεσίες web μέσω REST.
2. Το συμβάν των Συσκευών – Σήμερα, όλα πρέπει να δουλέψουν Κινητό συσκευές, είτε πρόκειται για φορητή συσκευή, φορητούς υπολογιστές ή ακόμα και συστήματα αυτοκινήτου.
Μπορείτε να φανταστείτε την προσπάθεια να δοκιμάσετε και να κωδικοποιήσετε εφαρμογές σε αυτές τις συσκευές για να μιλήσετε με κανονικές εφαρμογές web; Και πάλι, τα Restful API μπορούν να κάνουν αυτή τη δουλειά πιο απλή, επειδή όπως αναφέρθηκε στο σημείο 1, δεν χρειάζεται πραγματικά να γνωρίζετε ποιο είναι το υποκείμενο στρώμα για τη συσκευή.
3. Τέλος είναι το γεγονός του Νέφους – Όλα κινούνται στο σύννεφο. Οι εφαρμογές μετακινούνται σιγά σιγά σε συστήματα που βασίζονται σε σύννεφο όπως το in Azure or Amazon. Azure και Amazon παρέχουν πολλά API που βασίζονται στην αρχιτεκτονική Restful. Ως εκ τούτου, οι εφαρμογές πρέπει τώρα να αναπτυχθούν με τέτοιο τρόπο ώστε να γίνονται συμβατές με το Cloud. Επειδή λοιπόν όλες οι αρχιτεκτονικές που βασίζονται στο Cloud λειτουργούν με την αρχή REST, είναι πιο λογικό οι υπηρεσίες web να προγραμματίζονται στην αρχιτεκτονική που βασίζεται σε υπηρεσίες REST για να κάνουν την καλύτερη χρήση των υπηρεσιών που βασίζονται στο Cloud.
Ξεκουραστικός Archiδομή
Μια εφαρμογή ή αρχιτεκτονική που θεωρείται RESTful ή REST-style έχει τα ακόλουθα χαρακτηριστικά
1. Η κατάσταση και η λειτουργικότητα χωρίζονται σε κατανεμημένους πόρους – Αυτό σημαίνει ότι κάθε πόρος πρέπει να είναι προσβάσιμος μέσω των κανονικών εντολών HTTP των GET, POST, PUT ή DELETE. Έτσι, εάν κάποιος ήθελε να πάρει ένα αρχείο από έναν διακομιστή, θα πρέπει να μπορεί να εκδώσει το αίτημα GET και να λάβει το αρχείο. Εάν θέλουν να τοποθετήσουν ένα αρχείο στον διακομιστή, θα πρέπει να μπορούν να εκδώσουν το αίτημα POST ή PUT. Και τέλος, αν ήθελαν να διαγράψουν ένα αρχείο από τον διακομιστή, μπορούν να εκδώσουν το αίτημα DELETE.
2. Η αρχιτεκτονική είναι πελάτης/διακομιστής, ανιθαγενής, πολυεπίπεδη και υποστηρίζει προσωρινή αποθήκευση
- Ο πελάτης-διακομιστής είναι η τυπική αρχιτεκτονική όπου ο διακομιστής μπορεί να είναι ο διακομιστής web που φιλοξενεί την εφαρμογή και ο πελάτης μπορεί να είναι τόσο απλός όσο το πρόγραμμα περιήγησης Ιστού.
- Ανιθαγενής σημαίνει ότι η κατάσταση της αίτησης δεν διατηρείται στο REST. Για παράδειγμα, εάν διαγράψετε έναν πόρο από έναν διακομιστή χρησιμοποιώντας την εντολή DELETE, δεν μπορείτε να περιμένετε ότι αυτές οι πληροφορίες διαγραφής θα περάσουν στο επόμενο αίτημα.
Για να διασφαλίσετε ότι ο πόρος έχει διαγραφεί, θα πρέπει να εκδώσετε το αίτημα GET. Το αίτημα GET θα χρησιμοποιηθεί για να ληφθούν πρώτα όλοι οι πόροι στον διακομιστή. Μετά από αυτό θα πρέπει κανείς να δει αν ο πόρος είχε πράγματι διαγραφεί.
RESTFul Αρχές και Περιορισμοί
Η αρχιτεκτονική REST βασίζεται σε μερικά χαρακτηριστικά που αναλύονται παρακάτω. Οποιαδήποτε υπηρεσία web RESTful πρέπει να συμμορφώνεται με τα παρακάτω χαρακτηριστικά προκειμένου να ονομάζεται RESTful. Αυτά τα χαρακτηριστικά είναι επίσης γνωστά ως αρχές σχεδιασμού που πρέπει να τηρούνται όταν εργάζεστε με υπηρεσίες που βασίζονται στο RESTful.
Αυτή είναι η πιο θεμελιώδης απαίτηση μιας αρχιτεκτονικής που βασίζεται στο REST. Σημαίνει ότι ο διακομιστής θα έχει μια υπηρεσία web RESTful η οποία θα παρέχει την απαιτούμενη λειτουργικότητα στον πελάτη. Ο πελάτης στέλνει ένα αίτημα στην υπηρεσία web του διακομιστή. Ο διακομιστής είτε θα απέρριπτε το αίτημα είτε θα συμμορφωνόταν και θα παρείχε επαρκή απάντηση στον πελάτη.
- Ανιθαγενείς
Η έννοια του ανιθαγενούς σημαίνει ότι εναπόκειται στον πελάτη να διασφαλίσει ότι όλες οι απαιτούμενες πληροφορίες παρέχονται στον διακομιστή. Αυτό απαιτείται ώστε ο διακομιστής να μπορεί να επεξεργαστεί την απάντηση κατάλληλα. Ο διακομιστής δεν πρέπει να διατηρεί κανενός είδους πληροφορίες μεταξύ των αιτημάτων από τον πελάτη. Είναι μια πολύ απλή ανεξάρτητη αλληλουχία ερωτήσεων και απαντήσεων. Ο πελάτης κάνει μια ερώτηση, ο διακομιστής απαντά κατάλληλα. Ο πελάτης θα κάνει μια άλλη ερώτηση. Ο διακομιστής δεν θα θυμάται το προηγούμενο σενάριο ερώτησης-απάντησης και θα πρέπει να απαντήσει στη νέα ερώτηση ανεξάρτητα.
- κρύπτη
Η ιδέα της προσωρινής μνήμης είναι να βοηθήσει με το πρόβλημα των ανιθαγενών που περιγράφηκε στο τελευταίο σημείο. Δεδομένου ότι κάθε αίτημα πελάτη διακομιστή είναι ανεξάρτητο στη φύση του, μερικές φορές ο πελάτης μπορεί να ζητήσει ξανά από τον διακομιστή το ίδιο αίτημα. Αυτό παρόλο που το είχε ήδη ζητήσει στο παρελθόν. Αυτό το αίτημα θα πάει στον διακομιστή και ο διακομιστής θα απαντήσει. Αυτό αυξάνει την κυκλοφορία στο δίκτυο. Η κρυφή μνήμη είναι μια ιδέα που εφαρμόζεται στον πελάτη για την αποθήκευση αιτημάτων που έχουν ήδη σταλεί στον διακομιστή. Έτσι, εάν το ίδιο αίτημα δοθεί από τον πελάτη, αντί να πάει στον διακομιστή, θα πήγαινε στην κρυφή μνήμη και θα λάβει τις απαιτούμενες πληροφορίες. Αυτό εξοικονομεί το ποσό της κίνησης δικτύου από και προς το πίσω από τον πελάτη στον διακομιστή.
- Πολυεπίπεδο σύστημα
Η έννοια ενός πολυεπίπεδου συστήματος είναι ότι οποιοδήποτε πρόσθετο επίπεδο, όπως ένα επίπεδο ενδιάμεσου λογισμικού, μπορεί να εισαχθεί μεταξύ του πελάτη και του πραγματικού διακομιστή που φιλοξενεί την υπηρεσία Ιστού RESTFul (Το επίπεδο ενδιάμεσου λογισμικού είναι όπου δημιουργείται όλη η επιχειρηματική λογική. Αυτό μπορεί να είναι μια επιπλέον υπηρεσία δημιουργήθηκε με το οποίο θα μπορούσε να αλληλεπιδράσει ο πελάτης πριν πραγματοποιήσει μια κλήση στην υπηρεσία Ιστού.). Αλλά η εισαγωγή αυτού του επιπέδου πρέπει να είναι διαφανής, ώστε να μην διαταράσσει την αλληλεπίδραση μεταξύ του πελάτη και του διακομιστή.
- Διεπαφή/Ενιαία σύμβαση
Αυτή είναι η υποκείμενη τεχνική για το πώς θα πρέπει να λειτουργούν οι υπηρεσίες ιστού RESTful. Το RESTful λειτουργεί βασικά στο επίπεδο ιστού HTTP και χρησιμοποιεί τα παρακάτω βασικά ρήματα για να εργαστεί με πόρους στον διακομιστή
- POST – Για να δημιουργήσετε έναν πόρο στον διακομιστή
- GET – Για να ανακτήσετε έναν πόρο από τον διακομιστή
- PUT – Για να αλλάξετε την κατάσταση ενός πόρου ή να τον ενημερώσετε
- ΔΙΑΓΡΑΦΗ – Για να αφαιρέσετε ή να διαγράψετε έναν πόρο από τον διακομιστή
Δημιουργήστε την πρώτη σας υπηρεσία Web Restful στο ASP.NET
Τώρα σε αυτό το σεμινάριο REST API, θα μάθουμε πώς να δημιουργήσουμε μια υπηρεσία web Restful στο ASP.NET:
Οι υπηρεσίες Ιστού μπορούν να δημιουργηθούν σε διάφορες γλώσσες. Πολλά ολοκληρωμένα περιβάλλοντα ανάπτυξης μπορούν να χρησιμοποιηθούν για τη δημιουργία υπηρεσιών που βασίζονται σε REST.
Σε αυτό το παράδειγμα RESTful API, θα δημιουργήσουμε την εφαρμογή REST στο .Net χρησιμοποιώντας το Visual Studio. Στο παράδειγμά μας, για τις υπηρεσίες web Restful πρόκειται να προσομοιώσουμε το ακόλουθο παράδειγμα υπηρεσίας REST.
Θα έχουμε μια υπηρεσία ιστού Restful η οποία θα λειτουργεί στο παρακάτω σύνολο δεδομένων.
Το παρακάτω σύνολο δεδομένων αντιπροσωπεύει ένα παράδειγμα REST API για την ύπαρξη μιας εταιρείας που εκθέτει τα Εκπαιδευτικά προγράμματα που έχουν βασιστεί στο Tutorialid.
Εκμάθηση | Όνομα εκμάθησης |
---|---|
0 | Array |
1 | ουρές |
2 | Στοίβες |
Στο παράδειγμα εκμάθησης REST API, θα εφαρμόσουμε τα παρακάτω Restful Verbs.
- GET Tutorial – Όταν ένας πελάτης επικαλείται αυτό το Restful API, θα του δοθεί ολόκληρο το σύνολο των Οδηγών που είναι διαθέσιμο από την υπηρεσία Ιστού.
- GET Tutorial/Tutorialid – Όταν ένας πελάτης επικαλείται αυτό το Restful API, θα του δοθεί το όνομα Εκμάθησης με βάση το Εκμάθηση που έστειλε ο πελάτης.
- POST Tutorial/Tutorialname – Όταν ένας πελάτης επικαλείται αυτό το Restful API, ο πελάτης θα υποβάλει αίτημα για εισαγωγή ενός ονόματος εκμάθησης. Στη συνέχεια, η υπηρεσία web θα προσθέσει το υποβληθέν όνομα Εκμάθησης στη συλλογή.
- DELETE Tutorial/Tutorialid– Όταν ένας πελάτης επικαλείται αυτό το Restful API, ο πελάτης θα υποβάλει αίτημα διαγραφής ενός ονόματος εκμάθησης με βάση το Εκπαιδευτικό πρόγραμμα. Στη συνέχεια, η υπηρεσία web θα διαγράψει το υποβληθέν όνομα Εκμάθησης από τη συλλογή.
Ας ακολουθήσουμε τα παρακάτω βήματα σε αυτό το σεμινάριο RESTful API για να δημιουργήσουμε τις πρώτες μας υπηρεσίες ιστού RESTful, οι οποίες πραγματοποιούν την παραπάνω υλοποίηση.
Πώς να δημιουργήσετε την πρώτη σας ξεκούραστη υπηρεσία Web
Βήμα 1) Δημιουργία νέου έργου.
Το πρώτο βήμα είναι να δημιουργήσετε ένα κενό Asp.Net Web εφαρμογή. Από το Visual Studio 2013, κάντε κλικ στην επιλογή μενού Αρχείο->Νέο έργο.
Μόλις κάνετε κλικ στην επιλογή Νέο έργο, το Visual Studio θα σας δώσει ένα άλλο παράθυρο διαλόγου για να επιλέξετε τον τύπο του έργου και να δώσετε τις απαραίτητες λεπτομέρειες του έργου. Αυτό εξηγείται στο επόμενο βήμα αυτού του σεμιναρίου RESTful API
Βήμα 2) Εισαγάγετε το όνομα και την τοποθεσία του έργου.
- Βεβαιωθείτε ότι έχετε επιλέξει πρώτα τις υπηρεσίες ιστού RESTful C# πρότυπο web της εφαρμογής Web ASP.NET. Το έργο πρέπει να είναι αυτού του τύπου για να δημιουργηθεί έργο υπηρεσιών web. Επιλέγοντας αυτές τις επιλογές, το Visual Studio θα πραγματοποιήσει στη συνέχεια τα απαραίτητα βήματα για την προσθήκη απαιτούμενων αρχείων που απαιτούνται από οποιαδήποτε εφαρμογή που βασίζεται στο web.
- Δώστε ένα όνομα για το έργο σας που στην περίπτωσή μας έχει δοθεί ως "Webservice.REST".
- Στη συνέχεια, φροντίστε να δώσετε μια τοποθεσία, όπου θα αποθηκευτούν τα αρχεία του έργου.
Μόλις τελειώσετε, θα δείτε το αρχείο του έργου που δημιουργήθηκε στην εξερεύνηση λύσεων στο Visual Studio 2013.
Βήμα 3) Δημιουργήστε το αρχείο της υπηρεσίας web.
Το επόμενο βήμα είναι να δημιουργήσετε το αρχείο της υπηρεσίας web που θα έχει την υπηρεσία web RESTful
- Πρώτα κάντε δεξί κλικ στο αρχείο του έργου όπως φαίνεται παρακάτω
- Στο στάδιο αυτό,
- Κάντε δεξί κλικ στο αρχείο του έργου
- Επιλέξτε την επιλογή "Προσθήκη->νέου στοιχείου".
Στο παράθυρο διαλόγου που εμφανίζεται, πρέπει να εκτελέσετε τα εξής
- Επιλέξτε την υπηρεσία WCF Service (Ajax-enabled) – Επιλέξτε ένα αρχείο αυτού του τύπου, προκαλεί το Visual studio για να προσθέσετε κάποιο βασικό κώδικα που σας βοηθά να δημιουργήσετε μια υπηρεσία ιστού RESTful. Το WCF σημαίνει Windows Επικοινωνία Foundation. Το WCF είναι μια βιβλιοθήκη για εφαρμογές διαφόρων πλατφορμών ή της ίδιας πλατφόρμας για επικοινωνία μέσω των διαφόρων πρωτοκόλλων όπως TCP, HTTP, HTTPS. Ο Άγιαξ είναι βασικά Ασύγχρονος JavaΓραφή και XML. Το AJAX επιτρέπει στις ιστοσελίδες να ενημερώνονται ασύγχρονα ανταλλάσσοντας μικρές ποσότητες δεδομένων με τον διακομιστή στα παρασκήνια.
- Στη συνέχεια δώστε ένα όνομα για την υπηρεσία που είναι TutorialService στην περίπτωσή μας.
- Τέλος, κάντε κλικ στο κουμπί Προσθήκη για να προσθέσετε την υπηρεσία στη λύση.
Βήμα 4) Κάντε μια διαμόρφωση.
Το επόμενο βήμα είναι να κάνετε πραγματικά μια αλλαγή διαμόρφωσης για να μπορέσει αυτό το έργο να ολοκληρώσει τη δουλειά με τις υπηρεσίες web RESTful. Αυτό απαιτεί να κάνετε μια αλλαγή στο αρχείο που ονομάζεται Web.config. Αυτό το αρχείο εμφανίζεται στο ίδιο παράθυρο με το αρχείο έργου Webservice. Το αρχείο Web.config περιέχει όλες τις διαμορφώσεις που κάνουν την εφαρμογή web να λειτουργεί όπως θα έπρεπε. Η αλλαγή που γίνεται στην πραγματικότητα επιτρέπει στην εφαρμογή να στέλνει και να λαμβάνει δεδομένα ως μια καθαρή υπηρεσία web RESTful.
- Κάντε κλικ στο αρχείο Web.config για να ανοίξετε τον κώδικα
- Βρείτε για τη γραμμή
- Αλλάξτε τη γραμμή σε
Βήμα 5) Προσθέστε τον κωδικό μας για υλοποίηση.
Το επόμενο βήμα σε αυτό το σεμινάριο RESTful API είναι να προσθέσουμε τον κώδικά μας για υλοποίηση. Όλος ο κώδικας που αναφέρεται παρακάτω πρέπει να γραφτεί στο αρχείο TutorialService.svc
- Το πρώτο bit είναι να προσθέσουμε κώδικα για να αναπαραστήσουμε τα δεδομένα μας που θα χρησιμοποιηθούν στο πρόγραμμά μας. Έτσι, θα έχουμε μια λίστα με μεταβλητές συμβολοσειρών με τιμές "Πίνακες", "Ουρές" και "Στοίβες". Αυτό θα αντιπροσωπεύει το όνομα των σεμιναρίων που είναι διαθέσιμο μέσω της υπηρεσίας φιλοξενίας ιστού μας.
namespace Webservice.REST { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed public class TutorialService { private static List<String> lst = new List<String> (new String[] {"Arrays","Queues","Stacks"});
Βήμα 6) Καθορίστε τον κωδικό για τη μέθοδο GET.
Στη συνέχεια θα ορίσουμε τον κωδικό για τη μέθοδο GET. Αυτός ο κώδικας θα βρίσκεται επίσης στο ίδιο αρχείο TutorialService.svc. Αυτός ο κωδικός θα εκτελείται κάθε φορά που καλούμε την υπηρεσία από το πρόγραμμα περιήγησής μας.
Η παρακάτω μέθοδος θα χρησιμοποιηθεί για την εκπλήρωση του παρακάτω σεναρίου
- Εάν ένας χρήστης θέλει μια λίστα με όλα τα διαθέσιμα σεμινάρια, τότε θα πρέπει να γραφτεί ο παρακάτω κώδικας για να επιτευχθεί αυτό.
[WebGet(UriTemplate="/Tutorial")] public String GetAllTutorial() { int count = 1st.Count; String TutorialList = ""; for (int i = 0; i < count; i++) TutorialList = TutorialList + lst[i] + ","; return TutorialList; }
Επεξήγηση κώδικα: -
- Η πρώτη γραμμή κώδικα είναι η πιο σημαντική. Χρησιμοποιείται για να ορίσουμε πώς μπορούμε να καλέσουμε αυτήν τη μέθοδο μέσω URL. Έτσι, εάν ο σύνδεσμος προς την υπηρεσία ιστού μας είναι http://localhost:52645/TutorialService.svc και αν προσθέσουμε το '/Tutorial' στη διεύθυνση URL ως http://localhost:52645/TutorialService.svc/Tutorial , θα γίνει επίκληση του παραπάνω κωδικού. Το χαρακτηριστικό του 'WebGet' είναι μια παράμετρος που επιτρέπει σε αυτή τη μέθοδο να είναι μια μέθοδος RESTful έτσι ώστε να μπορεί να κληθεί μέσω του ρήματος GET.
- Αυτή η ενότητα κώδικα χρησιμοποιείται για να περάσει η λίστα με τις συμβολοσειρές στη μεταβλητή 'lst' και να επιστρέψει όλες στο πρόγραμμα κλήσης.
Βήμα 7) Επιστρέψτε την έξοδο.
Ο παρακάτω κωδικός διασφαλίζει ότι εάν πραγματοποιηθεί μια κλήση GET στην Υπηρεσία Εκμάθησης με αναγνωριστικό Εκμάθησης, τότε θα επιστρέψει το αντίστοιχο Όνομα Εκμάθησης με βάση το Αναγνωριστικό Εκμάθησης.
[WebGet (UriTemplate = "/Tutorial/{Tutorialid}")] public String GetTutorialbyID(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); return lst[pid]; }
Επεξήγηση κώδικα: -
- Η πρώτη γραμμή κώδικα είναι η πιο σημαντική. Χρησιμοποιείται για να ορίσουμε πώς μπορούμε να καλέσουμε αυτήν τη μέθοδο μέσω URL. Έτσι, εάν ο σύνδεσμος προς την υπηρεσία ιστού μας είναι http://localhost:52645/TutorialService.svc και αν προσθέσουμε το '/Tutorial/{Tutorialid}' στη διεύθυνση URL, τότε θα μπορούμε να καλέσουμε την υπηρεσία web ως http://localhost:52645/TutorialService.svc/Tutorial/1 ως παράδειγμα. Στη συνέχεια, η υπηρεσία Ιστού θα πρέπει να επιστρέψει το όνομα Εκμάθησης που είχε το αναγνωριστικό Εκμάθησης#1.
- Αυτή η ενότητα κώδικα χρησιμοποιείται για την επιστροφή του "Όνομα εκμάθησης" που έχει το αναγνωριστικό εκμάθησης μεταβιβασμένο στη μέθοδο web.
- Από προεπιλογή, αυτό που πρέπει να θυμόμαστε είναι ότι οτιδήποτε μεταβιβάζεται στη διεύθυνση URL στο πρόγραμμα περιήγησης είναι μια συμβολοσειρά.
- Αλλά πρέπει να θυμάστε ότι το Ευρετήριο στη λίστα μας πρέπει να είναι ακέραιος, επομένως προσθέτουμε τον απαραίτητο κώδικα για να μετατρέψουμε πρώτα το Εκμάθηση σε Ακέραιο και στη συνέχεια να το χρησιμοποιήσουμε για πρόσβαση στη θέση ευρετηρίου στη λίστα μας και
- Στη συνέχεια, επιστρέψτε την τιμή στο πρόγραμμα κλήσης ανάλογα.
Βήμα 8) Γράψτε τον κωδικό για τη μέθοδο POST.
Το επόμενο βήμα είναι να γράψουμε τον κώδικα για τη μέθοδο POST. Αυτή η μέθοδος θα γίνεται επίκληση κάθε φορά που θέλουμε να προσθέσουμε μια τιμή συμβολοσειράς στη λίστα εκμάθησης μέσω της μεθόδου POST. Για παράδειγμα, εάν θέλετε να προσθέσετε το όνομα Εκμάθησης του "Δοκιμή λογισμικού", τότε θα πρέπει να χρησιμοποιήσετε τη μέθοδο POST.
Επεξήγηση κώδικα: -
- Η πρώτη γραμμή είναι το χαρακτηριστικό "WebInvoke" που έχει προσαρτηθεί στη μέθοδό μας. Αυτό επιτρέπει την κλήση της μεθόδου μέσω της κλήσης POST. Τα χαρακτηριστικά RequestFormat και ResponseFormat πρέπει να αναφέρονται ως JSON, καθώς όταν δημοσιεύονται τιμές σε μια υπηρεσία web RESTFul, οι τιμές πρέπει να είναι σε αυτήν τη μορφή.
- Η δεύτερη γραμμή κώδικα χρησιμοποιείται για την προσθήκη της τιμής συμβολοσειράς που μεταβιβάστηκε μέσω της κλήσης POST στην υπάρχουσα λίστα συμβολοσειρών Tutorial.
Βήμα 9) Προσθήκη μεθόδου για τη διαχείριση της λειτουργίας DELETE.
Τέλος, θα προσθέσουμε τη μέθοδο μας για να χειριστούμε τη λειτουργία DELETE. Αυτή η μέθοδος θα γίνεται επίκληση κάθε φορά που θέλουμε να διαγράψουμε μια υπάρχουσα τιμή συμβολοσειράς από τη λίστα εκμάθησης μέσω της μεθόδου DELETE.
[WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Json, UriTemplate = "/Tutorial/{Tutorialid}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public void DeleteTutorial(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); 1st.RemoveAt(pid); }
Επεξήγηση κώδικα: -
- Η πρώτη γραμμή είναι το χαρακτηριστικό "WebInvoke" που έχει προσαρτηθεί στη μέθοδό μας. Αυτό επιτρέπει την κλήση της μεθόδου μέσω της κλήσης POST. Τα χαρακτηριστικά RequestFormat και ResponseFormat πρέπει να αναφέρονται ως JSON, καθώς όταν δημοσιεύονται τιμές σε μια υπηρεσία web RESTFul, οι τιμές πρέπει να είναι σε αυτήν τη μορφή. Σημειώστε ότι η παράμετρος Μέθοδος έχει οριστεί σε "ΔΙΑΓΡΑΦΗ". Αυτό σημαίνει ότι όποτε εκδώσουμε το ρήμα ΔΙΑΓΡΑΦΗ, αυτή η μέθοδος θα γίνεται επίκληση.
- Η δεύτερη γραμμή κώδικα χρησιμοποιείται για τη λήψη του Tutorialid που στάλθηκε μέσω της κλήσης DELETE και στη συνέχεια για τη διαγραφή αυτού του αναγνωριστικού από τη λίστα μας. (Ο Int32 Η συνάρτηση σε κώδικα χρησιμοποιείται για τη μετατροπή του αναγνωριστικού εκμάθησης από μεταβλητή συμβολοσειράς σε ακέραιο).
Εκτέλεση της πρώτης σας υπηρεσίας Web Restful
Τώρα που δημιουργήσαμε ολόκληρη την υπηρεσία web μας στην παραπάνω ενότητα. Ας δούμε πώς μπορούμε να τρέξουμε την υπηρεσία Tutorial ώστε να μπορεί να κληθεί από οποιονδήποτε πελάτη.
Για να εκτελέσετε την υπηρεσία web, ακολουθήστε τα παρακάτω βήματα
Βήμα 1) Κάντε δεξί κλικ στο αρχείο Project – Webservice.REST
Βήμα 2) Επιλέξτε την επιλογή μενού «Ορισμός ως Έργου εκκίνησης». Αυτό θα διασφαλίσει ότι αυτό το έργο εκτελείται όταν το Visual Studio εκτελεί ολόκληρη τη λύση
Βήμα 3) Το επόμενο βήμα είναι η εκτέλεση του ίδιου του έργου. Τώρα, ανάλογα με το προεπιλεγμένο πρόγραμμα περιήγησης που είναι εγκατεστημένο στο σύστημα, το κατάλληλο όνομα προγράμματος περιήγησης θα βρίσκεται δίπλα στο κουμπί εκτέλεσης στο Visual Studio. Στην περίπτωσή μας έχουμε Google Chrome εμφανίζεται. Απλώς κάντε κλικ σε αυτό το κουμπί.
Παραγωγή:-
Όταν εκτελείται το έργο, μπορείτε να περιηγηθείτε στην ενότητα TutorialService.svc/Tutorial και θα λάβετε την παρακάτω έξοδο.
Στην παραπάνω έξοδο,
- Μπορείτε να δείτε ότι το πρόγραμμα περιήγησης επικαλείται το ρήμα "GET" και εκτελεί τη μέθοδο "GetAllTutorial" στην υπηρεσία web. Αυτή η ενότητα χρησιμοποιείται για την εμφάνιση όλων των Οδηγών που εκτίθενται από την υπηρεσία web μας.
Δοκιμάζοντας την πρώτη σας υπηρεσία Web Restful
Στην παραπάνω ενότητα, έχουμε ήδη δει πώς να χρησιμοποιήσετε το πρόγραμμα περιήγησης για να εκτελέσετε το ρήμα "GET" και να καλέσετε το "GetAllTutorial".
- Ας χρησιμοποιήσουμε τώρα το πρόγραμμα περιήγησης για να εκτελέσουμε το ακόλουθο σενάριο περίπτωσης χρήσης.
GET Tutorial/Tutorialid – Όταν ένας πελάτης επικαλείται αυτό το Restful API, θα του δοθεί το όνομα Tutorial με βάση το Tutorialid που αποστέλλεται από τον πελάτη
Στο πρόγραμμα περιήγησής σας, προσθέστε τη συμβολοσειρά /1 μετά τη λέξη Εκμάθησης στη διεύθυνση URL. Εάν πατήσετε το κουμπί enter, θα λάβετε την παρακάτω έξοδο
Τώρα θα δείτε την έξοδο των Ουρών που στην πραγματικότητα αντιστοιχεί στον αριθμό 1 στη λίστα μας με τις συμβολοσειρές εκμάθησης. Αυτό σημαίνει ότι η μέθοδος "GetTutorialbyID" γίνεται τώρα επίκληση από την υπηρεσία Web μας. Δείχνει επίσης ότι η τιμή 1 μεταβιβάζεται με επιτυχία μέσω του προγράμματος περιήγησης στην υπηρεσία web και στη μέθοδό μας και γι' αυτό λαμβάνουμε τη σωστή αντίστοιχη τιμή των "Ουρών" στο πρόγραμμα περιήγησης.
- Στη συνέχεια, ας καταναλώσουμε την υπηρεσία ιστού μας εκτελώντας το παρακάτω σενάριο. Για αυτό, πρέπει να εγκαταστήσετε το εργαλείο που ονομάζεται "Fiddler” το οποίο είναι ένα δωρεάν εργαλείο με δυνατότητα λήψης από τον ιστότοπο.
POST Tutorial/Tutorialname – Όταν ένας πελάτης επικαλείται αυτό το Restful API, ο πελάτης θα υποβάλει αίτημα για εισαγωγή ενός ονόματος εκμάθησης. Στη συνέχεια, η υπηρεσία web θα προσθέσει το υποβληθέν όνομα Εκμάθησης στη συλλογή.
Εκτελέστε το εργαλείο Filddler και εκτελέστε τα παρακάτω βήματα.
- Μεταβείτε στην ενότητα συνθέτης. Χρησιμοποιείται για τη δημιουργία αιτημάτων που μπορούν να υποβληθούν σε οποιαδήποτε διαδικτυακή εφαρμογή.
- Βεβαιωθείτε ότι ο τύπος αιτήματος είναι "POST" και ότι εμφανίζεται το σωστό URL, το οποίο στην περίπτωσή μας θα έπρεπε να είναι http://localhost:52645/TutorialService.svc/Tutorial
- Βεβαιωθείτε ότι το Content-Type έχει επισημανθεί ως application/json. Να θυμάστε ότι η μέθοδος αιτήματος POST στην υπηρεσία Web μας δέχεται μόνο δεδομένα στυλ json, επομένως πρέπει να διασφαλίσουμε ότι αυτό καθορίζεται όταν στέλνουμε ένα αίτημα στην εφαρμογή μας.
- Τέλος, πρέπει να εισάγουμε τα δεδομένα μας. Να θυμάστε ότι η μέθοδός μας για POST δέχεται μια παράμετρο που ονομάζεται "str." Εδώ λοιπόν προσδιορίζουμε ότι θέλουμε να προσθέσουμε μια τιμή που ονομάζεται "Trees" στη συλλογή των ονομάτων εκμάθησης και να διασφαλίσουμε ότι έχει επισημανθεί στο όνομα της μεταβλητής str.
Τέλος, απλώς κάντε κλικ στο κουμπί Εκτέλεση στο fiddler. Αυτό θα στείλει ένα αίτημα στην υπηρεσία ιστού για ΑΝΑΡΤΗΣΗ των δεδομένων "Δέντρα" στην υπηρεσία ιστού μας.
Τώρα, όταν περιηγούμαστε στη διεύθυνση URL του Tutorial για να εμφανίσουμε όλες τις συμβολοσειρές στη λίστα εκμάθησης, θα δείτε τώρα ότι υπάρχει και η τιμή του "Trees". Αυτό δείχνει ότι το αίτημα POST στην υπηρεσία web εκτελέστηκε επιτυχώς και ότι προστέθηκε με επιτυχία στη Λίστα εκμάθησης.
- Στη συνέχεια, ας καταναλώσουμε την υπηρεσία ιστού μας εκτελώντας το παρακάτω σενάριο. Για αυτό πρέπει επίσης να χρησιμοποιήσουμε το εργαλείο fiddler
DELETE Tutorial/Tutorialid- Όταν ένας πελάτης επικαλείται αυτό το Restful API, ο πελάτης θα υποβάλει αίτημα διαγραφής ενός ονόματος εκμάθησης με βάση το Tutorialid. Στη συνέχεια, η υπηρεσία web θα διαγράψει το υποβληθέν όνομα Εκμάθησης από τη συλλογή.
Εκτελέστε το εργαλείο Filddler και εκτελέστε τα παρακάτω βήματα
- Μεταβείτε στην ενότητα συνθέτης. Χρησιμοποιείται για τη δημιουργία αιτημάτων που μπορούν να υποβληθούν σε οποιαδήποτε διαδικτυακή εφαρμογή.
- Βεβαιωθείτε ότι ο τύπος αιτήματος είναι "ΔΙΑΓΡΑΦΗ" και ότι εμφανίζεται η σωστή διεύθυνση URL, κάτι που στην περίπτωσή μας θα έπρεπε να είναι http://localhost:52645/TutorialService.svc/Tutorial. Βεβαιωθείτε ότι το αναγνωριστικό που χρησιμοποιείται για τη διαγραφή μιας συμβολοσειράς στη λίστα αποστέλλεται μέσω της διεύθυνσης URL ως παράμετρος. Στο παράδειγμά μας REST, στέλνουμε 1, οπότε αυτό θα διαγράψει το 2nd στοιχείο στη συλλογή μας που είναι "Ουρές".
Τέλος, απλώς κάντε κλικ στο κουμπί Εκτέλεση στο fiddler. Αυτό θα στείλει ένα αίτημα στην υπηρεσία ιστού για ΔΙΑΓΡΑΦΗ των δεδομένων "Ουρές" στην υπηρεσία ιστού μας.
Τώρα, όταν περιηγούμαστε στη διεύθυνση URL του Οδηγού για να εμφανίσουμε όλες τις συμβολοσειρές στη λίστα Εκμάθησης, θα παρατηρήσετε ότι η τιμή "Ουρές" δεν υπάρχει πλέον.
Αυτό δείχνει ότι το αίτημα DELETE στην υπηρεσία web εκτελέστηκε με επιτυχία. Το στοιχείο στον αριθμό ευρετηρίου 1 στη λίστα συμβολοσειρών Οδηγών διαγράφηκε επιτυχώς.
Σύνοψη
- Το REST σημαίνει μεταβίβαση αντιπροσωπευτικού κράτους. Το REST χρησιμοποιείται για τη δημιουργία διαδικτυακών υπηρεσιών που είναι ελαφριές, διατηρούμενες και επεκτάσιμες.
- Όλο και περισσότερες εφαρμογές μετακινούνται στην αρχιτεκτονική Restful. Αυτό συμβαίνει επειδή υπάρχουν πολλοί άνθρωποι που χρησιμοποιούν πλέον κινητές συσκευές και μια ευρύτερη ποικιλία εφαρμογών που μετακινούνται στο cloud.
- Οι κύριες πτυχές του REST είναι οι πόροι που βρίσκονται στον διακομιστή και τα ρήματα των GET, POST, PUT και DELETE, τα οποία μπορούν να χρησιμοποιηθούν για εργασία με αυτούς τους πόρους.
- Το Visual Studio και το.Net μπορούν να χρησιμοποιηθούν για τη δημιουργία υπηρεσιών web Restful.
- Όταν Δοκιμές υπηρεσίες web για POST και PUT, πρέπει να χρησιμοποιήσετε ένα άλλο εργαλείο που ονομάζεται fiddler, το οποίο μπορεί να χρησιμοποιηθεί για την αποστολή του αιτήματος POST και PUT στον διακομιστή.