Codez votre première API avec Node.js et Express Configurez le serveur

Comment configurer un serveur Express API dans Node.js

Dans le didacticiel précédent, nous avons appris l'architecture REST, les six contraintes de guidage de REST, la compréhension des méthodes de requête HTTP et de leurs codes de réponse, ainsi que l'anatomie d'un noeud final d'API RESTful..

Dans ce tutoriel, nous allons configurer un serveur pour que notre API vive. Vous pouvez créer une API avec n’importe quel langage de programmation et logiciel serveur, mais nous allons utiliser Node.js, qui est l’implémentation finale de JavaScript, et Express, un framework populaire et minimal pour Node..

Installation

Notre premier préalable est de nous assurer que Node.js et npm sont installés globalement sur l’ordinateur. Nous pouvons tester les deux en utilisant le -v drapeau, qui affichera la version. Ouvrez votre invite de commande et tapez ce qui suit.

noeud -v && npm -v
v10.8.0 6.2.0

Vos versions peuvent être légèrement différentes des miennes, mais tant que les deux sont présentes, nous pouvons commencer.

Créons un répertoire de projet appelé express api et passer à elle.

mkdir express-api && cd express-api 

Maintenant que nous sommes dans notre nouveau répertoire, nous pouvons initialiser notre projet avec la commande init.

npm init 

Cette commande vous invitera à répondre à quelques questions sur le projet, que vous pouvez choisir de remplir ou non. Une fois la configuration terminée, vous aurez un package.json fichier qui ressemble à ceci:

"name": "express-api", "version": "1.0.0", "description": "Node.js et API REST Express", "main": "index.js", "scripts":  "test": "echo \" Erreur: aucun test spécifié \ "&& exit 1", "author": "Tania Rascia", "licence": "MIT" 

Maintenant que nous avons notre package.json, nous pouvons installer les dépendances requises pour notre projet. Heureusement, nous n’avons pas besoin de trop de dépendances, seulement celles énumérées ci-dessous..

  • body-parser: middleware d'analyse corporelle.
  • express: un framework web minimaliste que nous utiliserons pour notre serveur.
  • mysql: un pilote MySQL.
  • request (facultatif): un moyen simple de passer des appels HTTP.

Nous allons utiliser le installer commande suivie par chaque dépendance pour terminer la configuration de notre projet.

npm installez body-parser exprimer la requête mysql 

Cela va créer un package-lock.json fichier et un node_modules répertoire, et notre package.json sera mis à jour pour ressembler à ceci:

"name": "express-api", "version": "1.0.0", "description": "Node.js et API REST Express", "main": "index.js", "scripts":  "test": "echo \" Erreur: aucun test spécifié \ "&& exit 1", "author": "Tania Rascia", "licence": "MIT", "dépendances": "dépendances": "corps -parser ":" ^ 1.18.3 "," express ":" ^ 4.16.3 "," mysql ":" ^ 2.16.0 "," demande ":" ^ 2.88.0 " 

Configurer un serveur HTTP

Avant de commencer à configurer un serveur Express, nous allons rapidement configurer un serveur HTTP avec la fonction intégrée de Node. http module, pour avoir une idée du fonctionnement d'un simple serveur.

Créez un fichier appelé hello-server.js. Charger dans le http module, définissez un numéro de port (j'ai choisi 3001) et créez le serveur avec le createServer () méthode.

// Construit un serveur avec le module HTTP du nœud const http = require ('http'); port constant = 3001; serveur const = http.createServer (); 

Dans l'article REST d'introduction, nous avons décrit les demandes et les réponses relatives à un serveur HTTP. Nous allons configurer notre serveur pour qu'il réponde à une requête, affiche l'URL demandée côté serveur et affiche un Bonjour serveur! message au client du côté de la réponse.

server ** on ('request' ** (request, response) => console.log ('URL: $ request.url'); response.end ('Hello, server!')) 

Enfin, nous indiquerons au serveur le port sur lequel écouter et afficherons une erreur s’il en existe un..

// Démarrer le serveur server.listen (port, (error) => if (error) renvoie console.log ('Error: $ error'); console.log ('Le serveur est à l'écoute sur le port $ port ')) 

Maintenant, nous pouvons démarrer notre serveur avec nœud suivi du nom de fichier.

noeud hello-server.js 

Vous verrez cette réponse dans le terminal:

Le serveur écoute sur le port 3001 

Pour vérifier que le serveur est réellement en marche, allez à http: // localhost: 3001 / dans la barre d'adresse de votre navigateur. Si tout fonctionne correctement, vous devriez voir Bonjour serveur! sur la page. Dans votre terminal, vous verrez également les URL qui ont été demandées.

URL: / URL: /favicon.ico 

Si vous deviez naviguer vers http: // localhost: 3001 / hello, tu verrais URL: / bonjour.

Nous pouvons également utiliser cURL sur notre serveur local, ce qui nous indiquera les en-têtes et le corps exact renvoyés..

curl -i http: // localhost: 3001 
HTTP / 1.1 200 OK Date: mer. 15 août 2018 22:14:23 GMT Connexion: Keep-Alive Content-Length: 14 Bonjour, serveur! 

Si vous fermez la fenêtre du terminal à tout moment, le serveur disparaîtra.

Maintenant que nous avons une idée de la façon dont le serveur, la requête et la réponse fonctionnent tous ensemble, nous pouvons réécrire cela dans Express, qui dispose d'une interface encore plus simple et de fonctionnalités étendues..

Configurer un serveur express

Nous allons créer un nouveau fichier, app.js, qui sera le point d’entrée de notre projet actuel. Comme avec le serveur http d'origine, nous aurons besoin d'un module et d'un port pour démarrer.

Créé un app.js déposer et y mettre le code suivant.

// Requiert des packages et définit le port const express = require ('express'); port constant = 3002; const app = express (); 

Au lieu de rechercher toutes les demandes, nous indiquerons explicitement que nous recherchons un OBTENIR requête à la racine du serveur (/). Quand / reçoit une demande, nous afficherons l'URL demandée et le message "Hello, Server!" message.

app.get ('/', (request, response) => console.log ('URL: $ request.url'); response.send ('Hello, Server!');); 

Enfin, nous allons démarrer le serveur sur le port 3002 avec le écouter () méthode.

// Démarrer le serveur const server = app.listen (port, (error) => if (erreur) renvoie console.log ('Erreur: $ erreur'); console.log ('Le serveur à l'écoute sur le port $  server.address (). port ');); 

Nous pouvons démarrer le serveur avec noeud app.js comme nous le faisions auparavant, mais nous pouvons également modifier la des scripts propriété dans notre package.json fichier pour exécuter automatiquement cette commande spécifique.

"scripts": "start": "node app.js", 

Maintenant nous pouvons utiliser npm start pour démarrer le serveur, et nous verrons notre message de serveur dans le terminal.

Serveur en écoute sur le port 3002 

Si nous courons un curl -i sur l'URL, nous verrons qu'il est propulsé par Express maintenant, et il y a quelques en-têtes supplémentaires tels que Type de contenu.

curl -i http: // localhost: 3002 
HTTP / 1.1 200 OK X-Powered-By: Express Content-Type: text / html; charset = utf-8 Contenu-Length: 14 ETag: W / "e-gaHDsc0MZK + LfDiTM4ruVL4pUqI" Date: mer, 15 août 2018 22:38:45 GMT Connexion: keep-alive Bonjour, Serveur! 

Ajouter un middleware d'analyse corporelle

Afin de traiter facilement avec POSTER et METTRE requêtes à notre API, nous ajouterons un middleware d'analyse corporelle. C’est là que notre analyseur de corps le module arrive. analyseur de corps extraira le corps entier d'une requête entrante et l'analysera dans un objet JSON avec lequel nous pourrons travailler.

Nous aurons simplement besoin du module en haut de notre fichier. Ajouter ce qui suit exiger déclaration au sommet de votre app.js fichier.

const bodyParser = require ('body-parser');… 

Ensuite, nous dirons à notre application Express d'utiliser analyseur de corps, et cherchez JSON.

// Utiliser le corps du middleware Node.js app.use (bodyParser.json ()); app.use (bodyParser.urlencoded (extended: true,)); 

Aussi, changeons notre message pour envoyer un objet JSON en réponse à la place du texte brut.

response.send (message: 'Node.js and Express REST API'); 

Ce qui suit est notre plein app.json déposer tel quel.

// Requiert des packages et définit le port const express = require ('express'); port constant = 3002; const bodyParser = require ('analyseur de corps'); const app = express (); // Utiliser le corps du middleware Node.js app.use (bodyParser.json ()); app.use (bodyParser.urlencoded (extended: true,)); app.get ('/', (demande, réponse) => response.send (message: 'Node.js and Express REST API');); // Démarrer le serveur const server = app.listen (port, (error) => if (erreur) renvoie console.log ('Erreur: $ erreur'); console.log ('Le serveur à l'écoute sur le port $  server.address (). port ');); 

Si vous envoyez un curl -i sur le serveur, vous verrez que l'en-tête renvoie maintenant Type de contenu: application / json; jeu de caractères = utf-8.

Configurer des itinéraires

Jusqu'à présent, nous n'avons qu'un OBTENIR route vers la racine (/), mais notre API devrait être capable de gérer les quatre principales méthodes de requête HTTP sur plusieurs URL. Nous allons configurer un routeur et créer de fausses données à afficher.

Créons un nouveau répertoire appelé itinéraires, et un fichier dans appelé routes.js. Nous allons créer un lien en haut de app.js.

const routes = require ('./ routes / routes'); 

Notez que le .js l'extension n'est pas nécessaire dans le besoin. Maintenant, nous allons déplacer notre application OBTENIR auditeur à routes.js. Entrez le code suivant dans routes.js.

routeur const = app => app.get ('/', (demande, réponse) => response.send (message: 'Node.js and Express REST API'););  

Enfin, exportez le routeur afin que nous puissions l'utiliser dans notre app.js fichier.

// Exporte le routeur module.exports = router; 

Dans app.js, remplace le app.get () code que vous aviez auparavant avec un appel à itinéraires ():

itinéraires (app); 

Vous devriez maintenant pouvoir aller à http: // localhost: 3002 et voir la même chose qu'avant. (N'oubliez pas de redémarrer le serveur!)

Une fois que tout est configuré et fonctionne correctement, nous allons servir des données JSON avec un autre itinéraire. Nous allons simplement utiliser de fausses données pour l'instant, car notre base de données n'est pas encore configurée.

Créons un utilisateurs variable dans routes.js, avec de fausses données utilisateur au format JSON.

const users = [id: 1, nom: "Richard Hendricks", email: "[email protected]",, id: 2, nom: "Bertram Gilfoyle", email: "[email protected]", ,]; 

Nous allons ajouter un autre OBTENIR route vers notre routeur, /utilisateurs, et envoyer les données utilisateur via.

app.get ('/ utilisateurs', (demande, réponse) => response.send (utilisateurs);); 

Après avoir redémarré le serveur, vous pouvez maintenant accéder à http: // localhost: 3002 / users et voir toutes nos données affichées.

Remarque: si vous n'avez pas d'extension de visionneuse JSON dans votre navigateur, je vous recommande fortement d'en télécharger une, telle que JSONView pour Chrome. Cela rendra les données beaucoup plus faciles à lire!

Visitez notre dépôt GitHub pour voir le code complet de ce message et le comparer au vôtre..

Conclusion

Dans ce tutoriel, nous avons appris à configurer un serveur HTTP intégré et un serveur Express dans un nœud, à router des demandes et des URL, et à utiliser des données JSON avec des requêtes get.. 

Dans la dernière tranche de la série d’API RESTful, nous allons connecter notre serveur Express à MySQL pour créer, afficher, mettre à jour et supprimer des utilisateurs dans une base de données, afin de finaliser les fonctionnalités de notre API..