Εγκατάσταση Postman
Εγκατάσταση του Node.js
Εκκίνηση του έργου μας Node.js
Ρύθμιση του Express.js
Ξεκινώντας το κύριο αρχείο μας
Δοκιμάζοντας το API μας με τον Postman
Διαδρομές API
Εισαγωγή στο NGINX
Ρύθμιση του NGINX
Πρώτη εκτέλεση με NGINX
Διατηρώντας το API μας σε λειτουργία
Διαχείριση της εφαρμογής μας με PM2
Τελικές παρατηρήσεις
Σε αυτό το σεμινάριο, θα μάθετε πώς να ρυθμίζετε ένα πλήρες RESTful API, το οποίο θα εξυπηρετεί αιτήματα HTTP χρησιμοποιώντας το Node.js και το Express ενώ θα το αντιστρέφει με το NGINX, στο Ubuntu 16.04 LTS. Θα χρησιμοποιήσουμε μια εφαρμογή που ονομάζεται Postman, ένα πολύ γνωστό εργαλείο ανάπτυξης API, για να δοκιμάσετε το API μας και να βεβαιωθείτε ότι είναι πλήρως λειτουργικό και λειτουργεί σωστά. Το Node.js είναι ένα γρήγορο, cross-platform πλαίσιο JavaScript που βασίζεται στη μηχανή V8 του Chrome. Χρησιμοποιείται τόσο σε επιτραπέζιους υπολογιστές όσο και σε εφαρμογές διακομιστή και είναι διάσημο για τον χειρισμό βρόχου συμβάντων ενός νήματος. Θα χρησιμοποιήσουμε το Node.js ως backend για το RESTful API μας, το οποίο συνοδεύεται από το Express.js, το πλαίσιο εφαρμογής ιστού μας που έχει δημιουργηθεί για το Node.js. Το Express.js κυκλοφορεί ως ελεύθερο και ανοιχτό λογισμικό. Το Express είναι από την πλευρά του διακομιστή, γραμμένο σε JavaScript και έχει σχεδιαστεί για τη δημιουργία API, γεγονός που το καθιστά ιδανικό για το έργο μας. Από την άλλη πλευρά, ο Postman είναι ένας πολύ ισχυρός πελάτης HTTP, έχοντας κατά νου την ανάπτυξη API. Διαθέτει όλα τα εργαλεία που θα μπορούσατε ενδεχομένως να θέλετε για την ανάπτυξη API.
Εγκατάσταση Postman
Αρχικά, θέλετε να μεταβείτε στον ιστότοπο του Postman και να πραγματοποιήσετε λήψη και εγκατάσταση του Postman για τον κύριο υπολογιστή σας (όχι τον διακομιστή σας). Όλες οι οδηγίες εγκατάστασης θα υπάρχουν στον ιστότοπό τους.
Εγκατάσταση του Node.js
Για να ξεκινήσουμε, θα χρειαστεί πρώτα να εγκαταστήσουμε το Node.js για να μπορέσουμε να ξεκινήσουμε την ανάπτυξη του API μας. Θα κάνουμε λήψη και εγκατάσταση του Node.js από τον επίσημο ιστότοπο.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Επιπλέον, θα θέλετε επίσης να πάρετε τα απαραίτητα εργαλεία κατασκευής, τα οποία θα σας βοηθήσουν στη μεταγλώττιση ενοτήτων.
sudo apt-get install build-essential
Για αυτό το σεμινάριο, θα χρησιμοποιήσουμε την έκδοση LTS του Node.js, η οποία είναι η έκδοση 8.9.3.
Εκκίνηση του έργου μας Node.js
Θα χρειαστεί να αρχικοποιήσουμε ένα νέο έργο Node.js, το οποίο θα περιέχει μια εφαρμογή. Για να το κάνετε αυτό, δημιουργήστε έναν νέο κατάλογο.
mkdir expressapi
Αλλαγή στον νέο κατάλογο. Μόλις μπείτε, εκτελέστε npm initκαι ολοκληρώστε όλες τις απαιτούμενες προτροπές. Σημειώστε το "σημείο εισόδου" της αίτησής σας: θα δημιουργήσετε αυτό το αρχείο αργότερα. Μόλις τελειώσετε, θα δείτε ένα package.jsonαρχείο στον τρέχοντα κατάλογο σας. Λειτουργεί ως περιγραφή του έργου μας και παραθέτει όλες τις εξαρτήσεις που χρειάζονται για να λειτουργήσει.
Ρύθμιση του Express.js
Τώρα θα διαμορφώσουμε το Express.js και τις εξαρτήσεις του.
npm install express
Θα ξεκινήσει η διαδικασία εγκατάστασης. Θα χρειαστούν μερικά λεπτά για να ολοκληρωθεί η λήψη όλων.
Ξεκινώντας το κύριο αρχείο μας
Στη συνέχεια, θα δημιουργήσουμε το κύριο αρχικό μας αρχείο για το API μας. Εδώ θα χρησιμοποιήσετε το "σημείο εισόδου" που είδατε στο package.jsonαρχείο. Για χάρη αυτού του σεμιναρίου, θα χρησιμοποιήσω τον προεπιλεγμένο συνδυασμό ονομάτων, index.js.
touch index.js
Στη συνέχεια, ανοίξτε το στο nano πρόγραμμα επεξεργασίας κειμένου.
nano index.js
Στο κύριο αρχείο μας, θέλουμε πρώτα να καλέσουμε όλα τα κύρια πακέτα μας και να καταχωρήσουμε τις διαδρομές μας.
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;
const router = express.Router();
router.get('/', function(req, res) {
res.json({ message: 'API is Online!' });
});
app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);
Βασικά αυτό που κάνουμε εδώ είναι η προετοιμασία της εφαρμογής μας και η ρύθμιση ενός βασικού δρομολογητή για το API μας. Σημειώστε ότι ορίσαμε τη θύρα της εφαρμογής μας σε 8080. Θα χρειαστούμε αυτόν τον αριθμό όταν διαμορφώνουμε το RESTful API. Τώρα είμαστε έτοιμοι να προχωρήσουμε και να δοκιμάσουμε το API μας.
Δοκιμάζοντας το API μας με τον Postman
Στον κατάλογο του έργου, εκτελέστε τα εξής.
node <filename>.js
Αυτό θα ξεκινήσει το API, όπου <filename>βρίσκεται το αρχείο έναρξης που καθορίσατε στο package.jsonαρχείο. Στη συνέχεια, ανοίξτε το Postman στον υπολογιστή/Mac σας και κάντε κλικ στο κουμπί " New" στην επάνω δεξιά γωνία και μετά κάντε κλικ στο " Request". Όταν εκεί, θα πρέπει να δείτε μια γραμμή που λέει " GET" δίπλα της. Εδώ θα εισαγάγουμε τη διεύθυνση URL του αιτήματός μας. Απλώς πληκτρολογήστε τα παρακάτω στην ενότητα URL αιτήματος και κάντε κλικ στο " Send".
`http://your-server-ip:3000/api`
Θα δείτε " 'API is online'".
Διαδρομές API
Για να χειριστούμε διαδρομές, θα χρησιμοποιήσουμε το δρομολογητή Express. Εάν δεν ξέρετε τι είναι ένας δρομολογητής, είναι ουσιαστικά ο τρόπος με τον οποίο τα τελικά σημεία της εφαρμογής ανταποκρίνονται στα αιτήματα των πελατών. Ακολουθούν οι διαδρομές που θα ορίσουμε ως παράδειγμα:
Τώρα θα δημιουργήσουμε την πρώτη μας δομή ενδιάμεσου λογισμικού διαδρομής, όπως κι έτσι.
router.use(function(req, res, next) {
console.log('We've got something.');
next() //calls next middleware in the application.
});
router.route('/numbers/:number').get((req, res) => {
res.json({result: req.params.number + 1})
});
Σε αυτό το παράδειγμα, ρυθμίσαμε μια κατάσταση όπου ένας χρήστης μπορεί να ζητήσει το άθροισμα ενός αριθμού + 1 παρέχοντας τη μορφή λέξης του, χρησιμοποιώντας τη μέθοδο GET. Χρησιμοποιούμε τη router.route()συνάρτηση για να δείξουμε τον αριθμό που θέλουμε να στείλουμε πίσω ως αποτέλεσμα. Οι παράμετροι ονομάζονται με ένα " :" μπροστά τους. Έχουμε πρόσβαση σε αυτές τις παραμέτρους μέσω req.params.
Εδώ είναι ένα παράδειγμα με γράμματα.
router.route('/letters/:letter').get((req, res) => {
res.json({result: req.params.letter.toUpperCase()})
});
Χρησιμοποιούμε την ίδια μέθοδο όπως παραπάνω, αλλά στέλνουμε πίσω το γράμμα με κεφαλαία.
Εισαγωγή στο NGINX
Το NGINX είναι ένα πολύ γνωστό λογισμικό ανοιχτού κώδικα που χρησιμοποιείται για web service, reverse proxies, streaming και πολλά άλλα. Θα χρησιμοποιήσουμε το NGINX για την αντιστροφή του διακομιστή μεσολάβησης του API μας, για να μας επιτρέψει να το εκτελέσουμε στη θύρα 80, επειδή το Node.js δεν επιτρέπει συνδέσεις σε θύρες μικρότερες από 1024 χωρίς πρόσβαση root. Αυτό μπορεί να είναι χρήσιμο όταν συνδέετε τον τομέα σας με τον διακομιστή σας.
Ρύθμιση του NGINX
Για να ξεκινήσετε την εγκατάσταση του NGINX, θα χρειαστεί να εκτελέσετε τα ακόλουθα στο τερματικό σας και να περιμένετε να ολοκληρωθεί η εγκατάσταση.
sudo apt-get install nginx
Στη συνέχεια, θα θελήσουμε να δημιουργήσουμε το αρχείο του ιστότοπού μας που θα χρησιμοποιήσει το NGINX για να αντιστρέψει τον διακομιστή μεσολάβησης της εφαρμογής μας.
sudo nano /etc/nginx/sites-available-api.js
Συμπληρώστε το αρχείο με το παρακάτω και μετά CTRL+ Oγια να το αποθηκεύσετε.
server {
listen 80;
location / {
proxy_set_header X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host
$http_host;
proxy_set_header
X-NginX-Proxy true; proxy_pass
http://127.0.0.1:8080/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade
$http_upgrade;
proxy_set_header Connection
"upgrade";
proxy_redirect off;
proxy_set_header
X-Forwarded-Proto $scheme;
}
}
Χρησιμοποιώντας την ίδια θύρα στην οποία εκτελέσαμε την εφαρμογή μας νωρίτερα, λέμε στο Nginx να ανακατευθύνει όλα τα αιτήματα από τη διεύθυνση IP στη θύρα 80στο API που εκτελείται στη θύρα 8080.
Στη συνέχεια, ενεργοποιήστε τον αντίστροφο διακομιστή μεσολάβησης συνδέοντας το νέο αρχείο μας στον sites-availableφάκελο:
sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available
Αυτό θα διασφαλίσει ότι το NGINX θα αντιστρέψει το API του διακομιστή μεσολάβησης.
Πρώτη εκτέλεση με NGINX
Μόλις ολοκληρώσουμε τη διαμόρφωση του NGINX, θα ξεκινήσουμε το NGINX και μετά θα ξεκινήσουμε το API μας. Αρχικά, επανεκκινήστε το NGINX.
sudo systemctl restart nginx
Στη συνέχεια, επιστρέψτε στον κατάλογο API και ξεκινήστε τον.
node <filename>.js
Η εφαρμογή θα εκτελεστεί, στη θύρα 80. Απλώς εκτελέστε τη δοκιμή από πάνω με τον Postman, για να βεβαιωθείτε ότι όλα λειτουργούν σωστά.
Διατηρώντας το API μας σε λειτουργία
Σε ένα περιβάλλον παραγωγής, θέλετε να βεβαιωθείτε ότι έχετε έναν διαχειριστή διεργασιών για τις εφαρμογές σας Node, ώστε να διασφαλίσετε ότι θα εκτελούνται για πάντα στο παρασκήνιο. Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε έναν διαχειριστή διεργασιών που ονομάζεται PM2 (Process Manager 2), ο οποίος είναι ένας διαχειριστής διεργασιών για εφαρμογές Node.js που θα τις κρατήσει ζωντανές για πάντα με ελάχιστο χρόνο διακοπής λειτουργίας. Το PM2 συνοδεύεται από πολλά χρήσιμα εργαλεία διαχείρισης, όπως διακοπή, επαναφόρτωση, παύση και άλλα. Για να εγκαταστήσετε το PM2, πληκτρολογήστε τα παρακάτω και περιμένετε να εγκατασταθεί.
sudo npm install pm2 -g
Μόλις εγκατασταθεί, το μόνο που έχετε να κάνετε είναι να βεβαιωθείτε ότι βρίσκεστε στον κατάλογο του έργου, πληκτρολογήστε τα παρακάτω και η εφαρμογή θα ξεκινήσει.
pm2 start <filename>.js
Διαχείριση της εφαρμογής μας με PM2
Όπως αναφέρθηκε προηγουμένως, το PM2 έχει μερικά χρήσιμα εργαλεία που μπορείτε να χρησιμοποιήσετε για την καλύτερη διαχείριση της εφαρμογής σας.
pm2 stop- Όπως υποδηλώνει το όνομα, αυτό σας επιτρέπει να σταματήσετε την τρέχουσα εφαρμογή και να τερματίσετε τη διαδικασία της. Εάν η εφαρμογή σας παράγει ένα απροσδόκητο αποτέλεσμα, τότε η διακοπή της θα είναι χρήσιμη.
pm2 list- Η λειτουργία λίστας σάς επιτρέπει να βλέπετε όλες τις τρέχουσες εφαρμογές που εκτελούνται μέσω PM2, αντιστοιχισμένες με τα ονόματά τους. Εάν πρέπει να ελέγξετε γρήγορα το χρόνο λειτουργίας της εφαρμογής σας, θα πρέπει να χρησιμοποιήσετε αυτό το εργαλείο.
pm2 restart- Εάν η εφαρμογή σας παγώσει για κάποιο λόγο και θέλετε να τη φορτώσετε ξανά, η επανεκκίνηση του pm2 κάνει ακριβώς αυτό. Θα σκοτώσει τη διαδικασία αίτησης και θα την ξεκινήσει ξανά, σε διαφορετική διαδικασία.
pm2 monit- Το ενσωματωμένο εργαλείο παρακολούθησης του PM2 σάς επιτρέπει να προβάλλετε ένα γράφημα των συγκεκριμένων λεπτομερειών της εφαρμογής σας, όπως η χρήση CPU/RAM, σε ένα φιλικό προς το χρήστη γράφημα τύπου ncurses. Αυτό είναι χρήσιμο εάν θέλετε μια οπτική εικόνα του φορτίου της εφαρμογής σας.
Ολοκληρώσαμε τώρα την εργασία μας για τη δημιουργία ενός RESTful API, χρησιμοποιώντας το Node.js, το Express και την αντιστροφή του διακομιστή μεσολάβησης με το NGINX. Μη διστάσετε να επεκταθείτε σε αυτό το σεμινάριο. Μπορείτε να κάνετε πολλά σπουδαία πράγματα με το νέο σας API, όπως να προσθέσετε μεθόδους ελέγχου ταυτότητας, μια βάση δεδομένων, καλύτερο χειρισμό διαδρομής και σφαλμάτων και πολλά, πολλά άλλα. Εάν έχετε έναν τομέα, με μια εγγραφή "A" που έχει ήδη ρυθμιστεί στη διεύθυνση IP σας, τότε θα μπορείτε να αποκτήσετε πρόσβαση στο API σας από τον τομέα σας. Εάν θέλετε να μάθετε περισσότερα για το Express.js, επισκεφτείτε τον ιστότοπό του στη διεύθυνση http://expressjs.com . Για να μάθετε περισσότερα σχετικά με το NGINX και τον αντίστροφο διακομιστή μεσολάβησης, επισκεφθείτε τη διεύθυνση http://nginx.com . Για να διαβάσετε περισσότερα για το PM2, επισκεφτείτε τη σελίδα τους στη διεύθυνση http://pm2.keymetrics.io .