Πώς να δημιουργήσετε ένα RESTful API με έλεγχο ταυτότητας σε 5 λεπτά - όλα από τη γραμμή εντολών σας (Μέρος 1)

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

  1. Τι πρόκειται να δημιουργήσουμε: RESTful API που διαχειρίζεται αρχεία καταγραφής τροφίμων σε ένα μενού εστιατορίου. Η βάση δεδομένων που χρησιμοποιείται στο back-end θα είναι το MongoDB. (Μπορείτε κυριολεκτικά να χρησιμοποιήσετε οποιαδήποτε βάση δεδομένων σε αυτόν τον πλανήτη. Υπάρχει μια εξαντλητική λίστα συνδέσμων βάσεων δεδομένων / συνδέσμων εκτός βάσης δεδομένων που υποστηρίζονται από το LoopBack παρακάτω.)
  2. Τι είναι το LoopBack: Σε εξαιρετικά απλούς όρους, είναι εξαιρετικά επεκτάσιμο, ανοιχτού κώδικα Node.js πλαίσιο που χρησιμοποιείται για τη δημιουργία δυναμικών, end-to-end REST APIs πολύ γρήγορα. Τα API που δημιουργούνται μέσω του LoopBack είναι Swagger API (το πιο δημοφιλές πλαίσιο API στον κόσμο και θα δείτε γιατί είναι πολύ σύντομα) Το front-end θα μπορούσε να κατασκευαστεί σε όποιο πλαίσιο και αν σας αρέσει. Γωνιακό ή αντιδραστικό.
  3. Δημιουργία εφαρμογής μέσω CLI: Αυτό είναι το μέρος WOW που αφαιρεί όλους τους σχετικούς προγραμματισμούς. Το LoopBack CLI είναι τόσο όμορφο που όλες οι ώρες ανάπτυξης μειώνονται σε δευτερόλεπτα. Εδώ, θα δημιουργούσαμε τη βάση δεδομένων μας χρησιμοποιώντας το CLI.
  4. Δημιουργία μοντέλων δεδομένων μέσω CLI: Και πάλι, χωρίς προγραμματισμό. Όλα μέσω του όμορφου CLI.
  5. Ρύθμιση ελέγχου ταυτότητας μέσω CLI: Εάν έχετε εμπειρία στη δημιουργία API, γνωρίζετε πόσο δύσκολο είναι να περιορίσετε τμήματα του API χρησιμοποιώντας έλεγχο ταυτότητας. Η ρύθμιση του ελέγχου ταυτότητας με βάση τα διακριτικά χρησιμοποιώντας το Express + Node.js από την πλευρά του διακομιστή είναι πόνος. Όλος αυτός ο πόνος θα αφαιρεθεί δοκιμάζοντας το ελιξίριο του LoopBack! Είναι το ποτό του ουρανού.

Οδηγός βήμα προς βήμα:

Προαπαιτούμενα: Βεβαιωθείτε ότι έχετε εγκαταστήσει το Node.js, το Robomongo και το διακομιστή MongoDB.

ΒΗΜΑ 1: Εγκαταστήστε το LoopBack CLI μέσω NPM

Ανοίξτε το τερματικό και γράψτε την ακόλουθη εντολή για να εγκαταστήσετε το LoopBack CLI έτσι ώστε να είναι δυνατή η πρόσβαση στην εντολή 'lb'. Μόνο μέσω της εντολής 'lb' μπορούμε να δημιουργήσουμε εφαρμογές, μοντέλα, πηγές δεδομένων κ.λπ. Για περαιτέρω ανάγνωση: //loopback.io/doc/en/lb2/Command-line-tools.html#using-yeoman

$ npm install -g loopback-cli

Βεβαιωθείτε ότι το έχετε εγκαταστήσει παγκοσμίως, διαφορετικά η εντολή "lb" ενδέχεται να μην λειτουργεί για εσάς.

ΒΗΜΑ 2: Δημιουργία εφαρμογής

Δημιουργήστε έναν κατάλογο όπου θέλετε να αποθηκεύσετε το έργο σας. Θα το ονομάσω «εστιατόριο-μενού». Βεβαιωθείτε ότι έχετε ανοίξει αυτόν τον κατάλογο στο τερματικό σας έτσι ώστε όλα τα αρχεία που δημιουργούνται μέσω του LoopBack να είναι αποθηκευμένα σε αυτόν το φάκελο.

Στη συνέχεια, εισαγάγετε την ακόλουθη εντολή:

$ lb

Θα τεθούν πολλές ερωτήσεις, όπως αυτές που εμφανίζονται στην παρακάτω εικόνα.

(Για πλοήγηση μεταξύ των επιλογών, χρησιμοποιήστε τα πλήκτρα βέλους στο πληκτρολόγιό σας)

Το API δημιουργείται!

Δεν αστειεύομαι. Δεν με πιστεύεις; Εκτελέστε την εφαρμογή χρησιμοποιώντας την ακόλουθη εντολή:

$ node .

Εάν δείξετε το localhost: 3000, θα δείτε κάτι τέτοιο:

Ωστόσο, αν πάτε στο localhost: 3000 / explorer, θα δείτε το υπέροχο SwaggerAPI.

Το LoopBack έχει ρυθμίσει όλες τις διαδρομές για εσάς:

GET χρήστες, POST χρήστες, PUT χρήστες, DELETE χρήστες, Είσοδος, Αποσύνδεση, Αλλαγή κωδικού πρόσβασης. Κυριολεκτικά τα πάντα! Διαφορετικά, θα χρειαζόταν ώρες εργασίας για να το αποκωδικοποιήσουμε.

Ανοίξτε αυτόν τον φάκελο σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου. Θα χρησιμοποιούσα το Atom.

ΒΗΜΑ 3: Σύνδεση MongoDB

Εάν ανοίξετε datasources.jsonστο φάκελο διακομιστή, θα πρέπει να δείτε κάτι σαν:

{ "db": { "name": "db", "connector": "memory" }}

Αυτό σημαίνει ότι προς το παρόν, η πηγή δεδομένων που χρησιμοποιείται είναι η μνήμη του υπολογιστή μας. Πρέπει να το αλλάξουμε σε Mongo. Ας εγκαταστήσουμε λοιπόν το σύνδεσμο mongo:

$ npm install --save loopback-connector-mongodb

Παράλληλα, ελπίζω ότι το mongod τρέχει. Έτσι θα γνωρίζετε ότι εκτελείται:

2018-01-27T15:01:13.278+0530 I NETWORK [thread1] waiting for connections on port 27017

Τώρα, ας συνδέσουμε το βύσμα!

$ lb datasource mongoDS --connector mongoDB

Αυτό θα θέσει πολλές ερωτήσεις ως εξής:

Τώρα τροποποιήστε datasources.jsonγιατί δεν θέλουμε να χρησιμοποιήσουμε τη μνήμη. Θέλουμε να χρησιμοποιήσουμε το Mongo.

{ "db": { "host": "localhost", "port": 27017, "url": "", "database": "food", "password": "", "name": "mongoDS", "user": "", "connector": "mongodb" }}

foodΔημιουργείται λοιπόν η βάση δεδομένων μας με την ονομασία:

ΒΗΜΑ 4: Δημιουργία μοντέλων δεδομένων

Εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε μοντέλα δεδομένων:

$ lb model

You may add however many properties to a particular model. To stop entering more properties, just hit Enter to get out of the CLI.

Check out dishes.json in the Common/Models folder.

{ "name": "dishes", "base": "PersistedModel", "idInjection": true, "options": { "validateUpsert": true }, "properties": { "name": { "type": "string", "required": true }, "price": { "type": "number", "required": true } }, "validations": [], "relations": {}, "acls": [], "methods": {}}

You may edit the properties from this json file as well. It is not necessary to use CLI.

Now let’s rerun the server using the following command and head over to localhost:3000/explorer

$ node .

Now you’ll see 2 models: dishes, and user

Now let’s POST some dish.

Now let’s GET the same dish.

You may play around with other HTTP requests too!

These APIs can be accessed outside the explorer as well:

//localhost:3000/api/dishes

STEP 5: AUTHENTICATION: Cherry on the cake!

To set up authentication, run the following command:

$ lb acl

Now, let’s try to GET the dishes. Before that, please rerun the server.

Ας πιστοποιήσουμε! Για αυτό, πρέπει να εγγραφούμε πρώτα. Λοιπόν, POST users.

Τώρα, ας συνδεθούμε.

Τώρα, αντιγράψτε το αναγνωριστικό στο σώμα απόκρισης και επικολλήστε το στο πεδίο Access Token στην κορυφή της σελίδας.

Τώρα έχουμε πιστοποιηθεί. ΝΑΙ.

Τώρα, ας πάμε dishesξανά.

ΖΗΤΩ!

Συγχαρητήρια εάν έχετε φτάσει με επιτυχία σε αυτό το βήμα. Τόσο υπερήφανος για εσένα.

Τα επόμενα βήματα θα ήταν να δημιουργήσετε μια διεπαφή γύρω από αυτό το API που θα γίνει αργότερα.

Ο οδηγός frontend αυτού του άρθρου μπορεί να βρεθεί εδώ. Σε αυτό το σεμινάριο, έχω χρησιμοποιήσει το ReactJS για να δημιουργήσω ένα frontend γύρω από αυτό το API.

Αντίο παιδιά!

Καλή κωδικοποίηση.