Dans ce didacticiel, vous apprendrez à configurer une API RESTful complète, qui servira les requêtes HTTP à l'aide de Node.js et Express tout en la procurant un proxy inverse avec NGINX, sur Ubuntu 16.04 LTS. Nous utiliserons une application appelée Postman, un outil de développement d'API très connu, pour tester notre API et s'assurer qu'elle est pleinement fonctionnelle et fonctionne correctement. Node.js est un framework JavaScript multiplateforme rapide basé sur le moteur V8 de Chrome. Il est utilisé dans les applications de bureau et de serveur et est célèbre pour sa gestion de boucle d'événement à un seul thread. Nous utiliserons Node.js comme backend pour notre API RESTful, livrée avec Express.js, notre cadre d'application Web conçu pour Node.js. Express.js est publié en tant que logiciel gratuit et ouvert. Express est côté serveur, écrit en JavaScript, et est conçu pour créer des API, ce qui le rend parfait pour notre projet. D'un autre côté, Postman est un client HTTP très puissant, avec le développement d'API à l'esprit. Il comprend tous les outils dont vous pourriez avoir besoin pour le développement d'API.
Installation de Postman
Tout d'abord, vous voulez vous rendre sur le site Web de Postman , puis télécharger et installer Postman pour votre PC principal (pas votre serveur). Toutes les instructions d'installation seront sur leur site Web.
Installation de Node.js
Pour commencer, nous devrons d'abord installer Node.js afin de pouvoir commencer à développer notre API. Nous téléchargerons et installerons Node.js depuis le site officiel.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
De plus, vous voudrez également récupérer les outils de construction nécessaires, qui vous seront utiles lors de la compilation des modules.
sudo apt-get install build-essential
Pour ce didacticiel, nous utiliserons la version LTS de Node.js, qui est la version 8.9.3.
Initialisation de notre projet Node.js
Nous devrons initialiser un nouveau projet Node.js, qui contiendra une application. Pour ce faire, créez un nouveau répertoire.
mkdir expressapi
Accédez au nouveau répertoire. Une fois à l'intérieur, exécutez npm init
et exécutez toutes les invites requises. Notez le "point d'entrée" de votre candidature: vous créerez ce fichier ultérieurement. Une fois que vous avez terminé, vous verrez un package.json
fichier dans votre répertoire actuel. Il agit comme une description de notre projet et répertorie toutes les dépendances nécessaires pour fonctionner.
Configuration d'Express.js
Nous allons maintenant configurer Express.js et ses dépendances.
npm install express
Le processus d'installation commencera. Il faudra quelques minutes à tout pour terminer le téléchargement.
Démarrage de notre fichier principal
Ensuite, nous allons créer notre fichier de démarrage principal pour notre API. Voici où vous utiliserez le "point d'entrée" que vous avez vu dans le package.json
fichier. Par souci de ce tutoriel, je vais utiliser le schéma de nommage par défaut, index.js
.
touch index.js
Ensuite, ouvrez-le dans l'éditeur de texte nano.
nano index.js
Dans notre fichier principal, nous voulons d'abord appeler tous nos packages principaux et enregistrer nos itinéraires.
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);
Fondamentalement, ce que nous faisons ici est d'initialiser notre application et de configurer un routeur de base pour notre API. Notez que nous avons défini le port de notre application sur 8080
. Nous aurons besoin de ce numéro pour configurer notre API RESTful. Nous sommes maintenant prêts à aller de l'avant et à tester notre API.
Test de notre API avec Postman
Dans le répertoire du projet, exécutez ce qui suit.
node <filename>.js
Cela démarrera l'API, où se <filename>
trouve le fichier de démarrage que vous avez spécifié dans le package.json
fichier. Ensuite, ouvrez Postman sur votre PC / Mac, cliquez sur le New
bouton "" dans le coin supérieur droit, puis cliquez sur " Request
". Lorsque vous y êtes, vous devriez voir une barre qui dit " GET
" à côté. Ici, nous entrerons notre URL de demande. Entrez simplement ce qui suit dans la section URL de la demande et cliquez sur " Send
".
`http://your-server-ip:3000/api`
Vous verrez " 'API is online'
".
Itinéraires API
Pour gérer les itinéraires, nous utiliserons le routeur Express. Si vous ne savez pas ce qu'est un routeur, c'est essentiellement la façon dont les points de terminaison d'application répondent aux demandes des clients. Voici les itinéraires que nous allons mettre en place à titre d'exemple:
Maintenant, nous allons configurer notre première structure de middleware de route, comme ça.
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})
});
Dans cet exemple, nous avons mis en place une situation où un utilisateur peut demander la somme d'un nombre + 1 en fournissant la forme verbale de celui-ci, en utilisant la méthode GET. Nous utilisons la router.route()
fonction pour indiquer le nombre que nous voulons renvoyer en conséquence. Les paramètres sont nommés avec un " :
" devant eux. Nous accédons à ces paramètres via req.params
.
Voici un exemple avec des lettres.
router.route('/letters/:letter').get((req, res) => {
res.json({result: req.params.letter.toUpperCase()})
});
Nous utilisons la même méthode que ci-dessus, mais nous renvoyons la lettre en majuscule.
Introduction à NGINX
NGINX est un logiciel open source bien connu utilisé pour le service Web, les procurations inverses, la diffusion en continu, etc. Nous utiliserons NGINX pour inverser le proxy de notre API, pour nous permettre de l'exécuter sur le port 80
, car Node.js n'autorise pas les connexions sur les ports inférieurs à 1024 sans accès root. Cela peut être utile lors de la liaison de votre domaine à votre serveur.
Configuration de NGINX
Pour commencer l'installation de NGINX, vous devrez exécuter ce qui suit dans votre terminal et attendre la fin de l'installation.
sudo apt-get install nginx
Ensuite, nous voudrons créer notre fichier de site que NGINX utilisera pour inverser le proxy de notre application.
sudo nano /etc/nginx/sites-available-api.js
Remplissez le fichier avec ce qui suit, puis CTRL+ Opour l'enregistrer.
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;
}
}
En utilisant le même port sur lequel nous avons exécuté notre application plus tôt, nous demandons à Nginx de rediriger toutes les demandes de notre adresse IP sur le port 80
vers notre API exécutée sur le port 8080
.
Ensuite, activez le proxy inverse en associant notre fichier nouvellement créé au sites-available
dossier:
sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available
Cela garantira que NGINX inversera le proxy de notre API.
Première course avec NGINX
Une fois que nous avons terminé notre configuration NGINX, nous allons démarrer NGINX, puis démarrer notre API. Tout d'abord, redémarrez NGINX.
sudo systemctl restart nginx
Revenez ensuite à votre répertoire API et démarrez-le.
node <filename>.js
L'application s'exécutera, sur le port 80
. Exécutez simplement le test d'en haut avec Postman, pour vous assurer que tout fonctionne correctement.
Faire fonctionner notre API
Dans un environnement de production, vous voulez vous assurer que vous disposez d'un gestionnaire de processus pour vos applications Node, afin de s'assurer qu'elles continuent de fonctionner pour toujours en arrière-plan. Dans ce didacticiel, nous utiliserons un gestionnaire de processus appelé PM2 (Process Manager 2), qui est un gestionnaire de processus pour les applications Node.js qui les maintiendra en vie pour toujours avec un temps d'arrêt minimal. PM2 est livré avec de nombreux outils de gestion utiles, tels que l'arrêt, le rechargement, la pause, etc. Pour installer PM2, tapez ce qui suit et attendez qu'il s'installe.
sudo npm install pm2 -g
Une fois qu'il est installé, tout ce que vous avez à faire est de vous assurer que vous êtes dans le répertoire du projet, tapez ce qui suit, et l'application sera lancée.
pm2 start <filename>.js
Gérer notre application avec PM2
Comme mentionné précédemment, PM2 dispose de quelques outils utiles que vous pouvez utiliser pour mieux gérer votre application.
-
pm2 stop
- Comme son nom l'indique, cela vous permet d'arrêter l'application en cours d'exécution et de tuer son processus. Si votre application produit un résultat inattendu, son arrêt vous sera utile.
-
pm2 list
- La fonction de liste vous permet de voir toutes les applications en cours d'exécution via PM2, mappées par leurs noms. Si vous devez vérifier rapidement la disponibilité de votre application, vous devez utiliser cet outil.
-
pm2 restart
- Si votre application se bloque pour une raison quelconque et que vous souhaitez la recharger, le redémarrage de pm2 fait exactement cela. Il tuera le processus de demande et le redémarrera, sous un processus différent.
-
pm2 monit
- L'outil de surveillance intégré de PM2 vous permet d'afficher un graphique des détails spécifiques de votre application, tels que l'utilisation du processeur / de la RAM, dans un graphique convivial de style ncurses. Ceci est utile si vous souhaitez une image visuelle de la charge de votre application.
Nous avons maintenant terminé notre tâche de création d'une API RESTful, en utilisant Node.js, Express, et en inversant le proxy avec NGINX. N'hésitez pas à développer ce tutoriel. Vous pouvez faire beaucoup de choses formidables avec votre nouvelle API, comme ajouter des méthodes d'authentification, une base de données, une meilleure gestion des routes et des erreurs, et bien plus encore. Si vous avez un domaine, avec un enregistrement "A" déjà configuré pour votre adresse IP, vous pourrez accéder à votre API à partir de votre domaine. Si vous souhaitez en savoir plus sur Express.js, visitez leur site Web à l' adresse http://expressjs.com . Pour en savoir plus sur NGINX et le proxy inverse, visitez http://nginx.com . Pour en savoir plus sur PM2, visitez leur page à http://pm2.keymetrics.io .