Настройка и запуск проекта LoopBack в ServBay
Что такое LoopBack?
LoopBack — это высокомасштабируемый open-source фреймворк для Node.js, разработанный IBM и предназначенный для быстрого создания API и микросервисов. Он поддерживает подход model-driven development (MDD), который помогает разработчикам эффективно определять схемы данных и автоматически генерировать мощные RESTful API. LoopBack предоставляет обширный набор возможностей, включая подключение к источникам данных, аутентификацию и авторизацию пользователей, API-эксплорер, а также поддержку многих баз данных и протоколов.
Основные функции и преимущества LoopBack
- Модельно-ориентированная разработка (MDD): интуитивный способ определения data-моделей с автоматическим созданием соответствующих API endpoint-ов и логики валидации данных.
- Поддержка множества источников данных: простое подключение к популярным базам данных (например, MongoDB, MySQL, PostgreSQL, MariaDB и др.), а также к RESTful сервисам и SOAP.
- Мощный CLI-инструмент: CLI LoopBack (Command Line Interface) предоставляет удобные команды для инициализации проектов, определения моделей, настройки источников данных и ускорения всех задач разработки.
- Модульность и расширяемость: гибкая архитектура с поддержкой компонентов и расширений для интеграции сторонних библиотек и сервисов под конкретные задачи бизнеса.
- Встроенные механизмы безопасности: готовые решения для аутентификации и авторизации пользователей, позволяющие быстро создавать защищённые API.
Используя LoopBack, разработчики могут значительно повысить скорость создания backend’a веб-приложений и API, а также создавать производительные и легко поддерживаемые приложения.
Настройка и запуск проекта LoopBack с помощью ServBay
В этом руководстве мы расскажем, как создать и запустить проект LoopBack, используя среду Node.js, предоставляемую ServBay. Мы воспользуемся функцией «Сайты» в ServBay для настройки локального веб-сервера и, используя обратный прокси, направим внешние запросы на порт, где работает приложение LoopBack, чтобы обеспечить удобный локальный доступ и отладку.
Создание проекта LoopBack
Установка LoopBack CLI
Прежде чем приступить к работе, убедитесь, что вы уже установили и активировали пакет Node.js в ServBay. Откройте терминал и выполните глобальную установку CLI-инструмента LoopBack с помощью npm:
bashnpm install -g @loopback/cli
1Инициализация проекта
Перейдите в рекомендуемую корневую директорию сайта ServBay
/Applications/ServBay/www
и с помощью CLI LoopBack инициализируйте новый проект. Для имени проекта рекомендуется использовать строчные буквы и дефисы, напримерservbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2CLI поможет вам пошагово выбрать необходимые опции (например, REST API, сериализация, аутентификация и т.д.) и настроить структуру проекта. Выбирайте опции в соответствии с вашими задачами.
Установка зависимостей проекта
Перейдите в созданную папку проекта и установите необходимые зависимости Node.js:
bashcd servbay-loopback-app npm install
1
2
Изменение ответа проекта LoopBack (опционально)
Чтобы продемонстрировать, как получить доступ к вашему приложению через ServBay, можно настроить стандартный endpoint /ping
, чтобы он возвращал кастомный ответ.
Измените файл
src/controllers/ping.controller.ts
Найдите в проекте файл
src/controllers/ping.controller.ts
и замените его содержимое, чтобы endpoint/ping
возвращал строку "Hello ServBay!":typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // Измените возвращаемое значение на "Hello ServBay!" return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
Запуск проекта в режиме разработки
Во время разработки вы обычно запускаете встроенный сервер LoopBack для быстрой отладки и итераций. Доступ к этому серверу будет организован через обратный прокси ServBay.
Запуск dev-сервера
В корневой папке проекта запустите приложение LoopBack через терминал. По умолчанию оно слушает определённый порт — укажите нужный через переменную
PORT
, например,8585
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2После запуска в терминале отобразится сообщение типа "Server is running at http://[::1]:8585".
Настройка сайта в ServBay (обратный прокси)
Откройте панель управления ServBay и войдите в раздел «Сайты». Нажмите кнопку добавления и создайте новый обратный прокси-сайт, чтобы все запросы к определённому домену и порту направлялись на внутренний адрес и порт приложения LoopBack:
- Имя (Name): например,
My first LoopBack dev site
(идентификатор сайта в ServBay) - Домен (Domain): например,
servbay-loopback-dev.servbay.demo
(домен для работы локально в браузере) - Тип сайта (Type): выберите
Reverse Proxy
(обратный прокси) - IP-адрес (IP Address):
127.0.0.1
(приложение LoopBack работает локально) - Порт (Port):
8585
(порт, который прослушивает приложение)
После завершения настройки сохраните изменения и примените их в ServBay. Система автоматически настроит локальный DNS (редактируя файл
/etc/hosts
или используя ServBay Helper Tool) и веб-сервер (Caddy или Nginx), чтобы по вашему локальному домену можно было обращаться к сервису.С подробностями настройки обратного прокси-сайта в ServBay можно ознакомиться по ссылке: Добавление Node.js сайта для разработки.
- Имя (Name): например,
Доступ к приложению в dev-режиме
Откройте браузер и перейдите по указанному домену и пути к endpoint’у LoopBack, например:
https://servbay-loopback-dev.servbay.demo/ping
.ServBay по умолчанию автоматически настраивает SSL-сертификат для локального сайта (через ServBay User CA или ServBay Public CA), так что вы можете безопасно обращаться к локальному сайту по HTTPS, что хорошо имитирует продакшен-среду и помогает заранее выявить возможные проблемы с поддержкой SSL. Подробнее об SSL в ServBay: Защита сайта с помощью SSL.
Развёртывание production-версии (опционально)
Когда ваш проект LoopBack готов к деплою, его стоит запустить в production-режиме для более высокой производительности и минимального вывода отладочной информации.
Запуск production-сервера
В корневой папке проекта запустите приложение LoopBack в production-режиме, задав, например, порт
8586
, и установив переменную окруженияNODE_ENV=production
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2Настройка production-сайта в ServBay (обратный прокси)
Вернитесь в раздел «Сайты» панели управления ServBay, добавьте или измените обратный прокси-сайт для production-версии приложения:
- Имя (Name): например,
My first LoopBack production site
- Домен (Domain): например,
servbay-loopback-prod.servbay.demo
- Тип сайта (Type): выберите
Reverse Proxy
- IP-адрес (IP Address):
127.0.0.1
- Порт (Port):
8586
(порт, на котором работает production-приложение)
Сохраните и примените изменения.
- Имя (Name): например,
Доступ к production-версии приложения
Откройте браузер и проверьте приложение по production-домену, например:
https://servbay-loopback-prod.servbay.demo/ping
. ServBay также автоматически предоставит поддержку HTTPS.
Подключение к базам данных
Фреймворк LoopBack поддерживает множество баз данных через data-source коннекторы. В ServBay доступны MySQL, MariaDB, PostgreSQL, MongoDB, Redis и другие — их можно легко запустить через ServBay, а затем сконфигурировать подключение в вашем проекте LoopBack.
Ниже приведены примеры настройки подключения к наиболее распространённым базам данных, которые предоставляет ServBay. Изменяйте эти параметры согласно вашей реальной конфигурации.
Важно: В примерах ниже указаны placeholder-значения (имя пользователя и пароль). Обязательно указывайте фактические реквизиты root-пользователя или другого пользователя, заданные вами при создании базы данных через панель управления ServBay.
Подключение к MongoDB
Убедитесь, что пакет MongoDB установлен и запущен в ServBay. Установите коннектор LoopBack для MongoDB:
bashnpm install --save @loopback/connector-mongodb
1Затем настройте data-source (обычно в файле
src/datasources/mongodb.datasource.ts
или аналогичном):typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // В ServBay MongoDB обычно работает на localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // Замените на имя вашей базы host: 'localhost', port: 27017, user: '', // Укажите имя пользователя, если включена аутентификация password: '', // Укажите пароль, если включена аутентификация database: 'servbay-loopback-app', // Замените на имя вашей базы данных // Дополнительные параметры... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Подключение к Redis
Убедитесь, что пакет Redis установлен и запущен в ServBay. Установите Redis-коннектор для LoopBack (обратите внимание: официального
@loopback/connector-redis
нет, обычно используютloopback-connector-redis
из сообщества или просто библиотекуredis
в сочетании с сервисами LoopBack):bashnpm install --save loopback-connector-redis # или другую совместимую библиотеку Redis
1Затем добавьте data-source примерно так (в стиле
loopback-connector-redis
):typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // В ServBay Redis по умолчанию слушает localhost:6379 url: 'redis://localhost:6379', // Дополнительные параметры... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Примечание: В LoopBack 4 работа с источниками данных отличается от подхода в LoopBack 3. Пример выше дан в стиле коннектора из LB3 для простоты, но на практике в LB4 рекомендуется использовать декоратор
@datasource
из@loopback/repository
и современный стиль конфигурирования. Актуальные параметры — host, port, user, password, database — остаются теми же. За подробностями обращения к официальной документации LoopBack 4.Подключение к MariaDB (или MySQL)
Проверьте, что MariaDB или MySQL установлены и запущены через ServBay — обе СУБД поддерживаются. Коннектор LoopBack для MySQL также работает с MariaDB. Установите MySQL-коннектор:
bashnpm install --save @loopback/connector-mysql
1Дальше настройте data-source:
typescript// src/datasources/mariadb.datasource.ts или mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // или 'mysql' connector: 'mysql', // используем mysql-коннектор // url: '', // можно использовать url или отдельные параметры host, port, database host: 'localhost', // В ServBay база слушает localhost port: 3306, // Стандартный порт MariaDB/MySQL user: 'root', // Обычно root — стандартный пользователь password: 'password', // << Замените на реальный пароль из настроек ServBay >> database: 'servbay_loopback_app', // Замените на имя вашей базы // Дополнительные параметры... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // или 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Примечание: В примере для
password: 'password'
используется placeholder. Найдите/установите свой пароль для MariaDB/MySQL через панель управления ServBay и добавьте его в конфиг.Подключение к PostgreSQL
Проверьте, что PostgreSQL установлен и запущен через ServBay. Установите коннектор для PostgreSQL:
bashnpm install --save @loopback/connector-postgresql
1Затем настройте data-source:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // можно использовать url или отдельные параметры host: 'localhost', // В ServBay PostgreSQL слушает localhost port: 5432, // Стандартный порт PostgreSQL user: 'user', // << Укажите имя пользователя, заданное в ServBay >> password: 'password', // << Укажите фактический пароль >> database: 'servbay_loopback_app', // Имя вашей базы // Дополнительные параметры... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Примечание: Параметры
user: 'user'
иpassword: 'password'
в примере — это placeholder-значения. Обязательно укажите актуальные данные, созданные вами через панель управления ServBay.
Итог
Следуя этому руководству, вы смогли создать, настроить и запустить проект LoopBack Node.js в локальной среде разработки ServBay. Теперь вы умеете использовать функцию сайтов с обратным прокси для доступа к приложению, а также настраивать подключение LoopBack к базам данных, предоставляемым ServBay.
ServBay обеспечивает LoopBack и другим Node.js-фреймворкам стабильную и удобную локальную среду разработки, вместе с интегрированным веб-сервером, базами данных и менеджером языковых сред — что существенно упрощает и ускоряет рабочий процесс разработчика. Благодаря управлению сайтами, поддержке SSL и интеграции баз данных, ServBay позволяет разрабатывать и тестировать приложения эффективнее и безопаснее.