Як створити RESTful API з автентифікацією за 5 хвилин - все з вашого командного рядка (Частина 1)

Якщо заголовок цієї статті вас збуджує, то, друже, ти до кінця досягнеш рівня 100 задоволення. Я швидко пройду курс цієї статті:

  1. Що ми збираємось створити: RESTful API, який обробляє журнали продуктів харчування в меню ресторану. Базою даних, яка використовується у фоновому режимі, буде MongoDB. (Ви можете буквально використовувати будь-яку нестабільну базу даних на цій планеті. Нижче наведено вичерпний перелік сполучників баз даних / сполучників, що не належать до бази даних, що підтримуються LoopBack нижче.)
  2. Що таке LoopBack: У надзвичайно простих термінах це надзвичайно розширювана платформа Node.js з відкритим кодом, яка використовується для дуже швидкого створення динамічних наскрізних API REST. API, згенеровані через LoopBack, є API Swagger (найпопулярніший у світі API-інтерфейс, і ви скоро зрозумієте, чому). Фронт-енд можна зробити в будь-якій структурі, в яку ви закохані; Кутовий або реагуючий.
  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 створив для вас усі маршрути:

ОТРИМАТИ користувачів, користувачів POST, PUT користувачів, ВИДАЛИТИ користувачів, Увійти, Вийти, Змінити пароль. Буквально все! В іншому випадку для кодування цього знадобляться години роботи.

Відкрийте цю папку в будь-якому текстовому редакторі. Я б використовував Atom.

КРОК 3: Підключення MongoDB

Якщо ви відкриєте datasources.jsonпапку Server, ви побачите щось на зразок:

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

Це означає, що в даний час джерелом даних, що використовується, є пам’ять нашого комп’ютера. Ми повинні змінити це на Монго. Тож давайте встановимо роз'єм mongo:

$ npm install --save loopback-connector-mongodb

Поряд, я сподіваюся, що монгод працює. Ось як ви могли б знати, що він працює:

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

Тепер підключимо роз’єм!

$ lb datasource mongoDS --connector mongoDB

Це поставить багато запитань наступним чином:

Тепер модифікуйте, datasources.jsonоскільки ми не хочемо використовувати пам’ять. Ми хочемо використовувати Монго.

{ "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.

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.