Comment créer une API RESTful avec authentification en 5 minutes - le tout à partir de votre ligne de commande (partie 1)

Si le titre de cet article vous excite, alors mon ami, vous êtes sur le point d'atteindre le niveau 100 de satisfaction à la fin. Je vais rapidement parcourir le cours de cet article:

  1. Ce que nous sommes sur le point de créer: l' API RESTful qui gère les journaux des produits alimentaires sur un menu de restaurant. La base de données utilisée dans le back-end sera MongoDB. (Vous pouvez littéralement utiliser n'importe quelle base de données fricking sur cette planète. Il y a une liste exhaustive des connecteurs de base de données / connecteurs non-base de données pris en charge par LoopBack ci-dessous.)
  2. Qu'est-ce que LoopBack: En termes extrêmement simples, il s'agit d'un framework Node.js hautement extensible et open source utilisé pour créer très rapidement des API REST dynamiques de bout en bout. Les API générées via LoopBack sont des API Swagger (le framework d'API le plus populaire au monde, et vous verrez pourquoi très bientôt). Le front-end peut être réalisé dans n'importe quel cadre dont vous êtes amoureux; Angulaire ou React.
  3. Création de l'application via CLI: C'est la partie WOW qui supprime toute la programmation impliquée. LoopBack CLI est si beau que toutes les heures de travail de développement sont réduites à quelques secondes. Ici, nous installerions notre base de données en utilisant CLI.
  4. Création de modèles de données via CLI: Encore une fois, pas de programmation. Le tout via la belle CLI.
  5. Configuration de l'authentification via CLI: si vous avez de l'expérience dans la création d'API, vous savez à quel point il est difficile de restreindre certaines parties de l'API à l'aide de l'authentification. La configuration de l'authentification basée sur les jetons à l'aide d'Express + Node.js côté serveur est une douleur. Toute cette douleur sera supprimée en goûtant l'élixir de LoopBack! C'est la boisson du paradis.

Guide étape par étape:

Pré-requis: assurez-vous que Node.js, Robomongo est installé et que le serveur MongoDB est en cours d'exécution.

ÉTAPE 1: Installez LoopBack CLI via NPM

Ouvrez le terminal et écrivez la commande suivante pour installer LoopBack CLI afin que la commande 'lb' soit accessible. Ce n'est qu'avec la commande 'lb' que nous pouvons générer des applications, des modèles, des sources de données, etc. Pour en savoir plus: //loopback.io/doc/en/lb2/Command-line-tools.html#using-yeoman

$ npm install -g loopback-cli

Assurez-vous de l'installer globalement, sinon la commande «lb» pourrait ne pas fonctionner pour vous.

ÉTAPE 2: Création de l'application

Créez un répertoire dans lequel vous souhaitez stocker votre projet. Je l'appellerai «menu-restaurant». Assurez-vous d'avoir ouvert ce répertoire dans votre terminal afin que tous les fichiers générés via LoopBack soient stockés dans ce dossier.

Entrez ensuite la commande suivante:

$ lb

De nombreuses questions seront posées, comme celles affichées dans l'image ci-dessous.

(Pour naviguer parmi les options, utilisez les touches fléchées de votre clavier)

L'API EST CRÉÉE!

Je ne plaisante pas. Tu ne me crois pas? Exécutez l'application à l'aide de la commande suivante:

$ node .

Si vous pointez vers localhost: 3000, vous verrez quelque chose comme ceci:

Cependant, si vous allez sur localhost: 3000 / explorer, vous verrez le magnifique SwaggerAPI.

LoopBack a mis en place tous les itinéraires pour vous:

GET utilisateurs, utilisateurs POST, utilisateurs PUT, SUPPRIMER des utilisateurs, connexion, déconnexion, changement de mot de passe. Littéralement tout! Autrement, il faudrait des heures de travail pour coder cela.

Ouvrez ce dossier dans n'importe quel éditeur de texte. J'utiliserais Atom.

ÉTAPE 3: Connexion de MongoDB

Si vous ouvrez datasources.jsondans le dossier Serveur, vous devriez voir quelque chose comme:

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

Cela signifie qu'actuellement, la source de données utilisée est la mémoire de notre ordinateur. Nous devons changer cela en Mongo. Alors installons le connecteur mongo:

$ npm install --save loopback-connector-mongodb

Parallèlement, j'espère que Mongod est en cours d'exécution. Voici comment vous sauriez qu'il fonctionne:

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

Maintenant, connectons le connecteur!

$ lb datasource mongoDS --connector mongoDB

Cela posera beaucoup de questions comme suit:

Modifiez maintenant datasources.jsoncar nous ne souhaitons pas utiliser de mémoire. Nous souhaitons utiliser Mongo.

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

Ainsi, notre base de données nommée: foodest créée.

ÉTAPE 4: Création de modèles de données

Exécutez la commande suivante pour créer des modèles de données:

$ 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.

Let’s get authenticated! For that, we need to get registered first. So we POST in users.

Now, let’s log in.

Now, copy the ID in the response body and paste it in the Access Token field on top of the page.

Now we are authenticated. YAY.

Now, let’s GET the dishes again.

HOORAY!

Congratulations if you’ve successfully reached this step. So proud of you.

Next steps would be to create a front end around this API which would be done later.

The frontend tutorial of this article can be found here. In that tutorial, I have used ReactJS to weave a frontend around this API.

Bye folks!

Happy coding.