Configurer et exécuter un projet LoopBack avec ServBay
Qu'est-ce que LoopBack ?
LoopBack est un framework Node.js open source extrêmement extensible, développé par IBM, pensé pour construire rapidement des APIs et microservices. Il adopte une approche de développement pilotée par les modèles (MDD), permettant aux développeurs de définir efficacement leurs modèles de données et de générer automatiquement de puissantes APIs RESTful. Le framework LoopBack intègre de nombreuses fonctionnalités, telles que la connexion à diverses sources de données, l’authentification et l’autorisation des utilisateurs, un explorateur d’API, et offre un support étendu pour plusieurs bases de données et protocoles.
Caractéristiques principales et avantages de LoopBack
- Développement piloté par les modèles (MDD) : Définissez de façon intuitive vos modèles de données ; le framework génère automatiquement les endpoints API correspondants et la logique de validation des données.
- Support multi-sources de données : Reliez facilement des bases de données populaires (MongoDB, MySQL, PostgreSQL, MariaDB, etc.), ainsi que des services REST, SOAP, etc.
- Outil CLI puissant : L’interface en ligne de commande LoopBack (CLI) propose de nombreuses commandes pour simplifier l’initialisation des projets, la définition des modèles, la configuration des sources de données et bien plus.
- Modularité et extensibilité : Sa conception flexible permet d'intégrer des bibliothèques tierces et des services spécifiques via composants et extensions.
- Sécurité intégrée : Fournit des mécanismes d’authentification et d’autorisation prêts à l'emploi, permettant de créer rapidement des APIs sécurisées.
LoopBack aide considérablement les développeurs à accélérer la création de backends et d’APIs web, pour des applications hautes performances et faciles à maintenir.
Configurer et exécuter un projet LoopBack avec ServBay
Ce guide vous accompagne dans la création et l’exécution d’un projet LoopBack via l’environnement Node.js de ServBay. Nous utiliserons la fonctionnalité « Site » de ServBay pour configurer un serveur web local, et mettrons en place un proxy inversé pour rediriger les requêtes externes vers le port sur lequel tourne votre application LoopBack, afin de faciliter l’accès local et le débogage.
Créer un projet LoopBack
Installer LoopBack CLI
Avant de commencer, assurez-vous d’avoir installé et activé le package Node.js sur ServBay. Ouvrez un terminal et installez LoopBack CLI globalement via npm :
bashnpm install -g @loopback/cli
1Initialiser le projet
Allez dans le dossier racine recommandé par ServBay pour vos sites,
/Applications/ServBay/www
, puis utilisez le CLI LoopBack pour créer un nouveau projet. Il est conseillé d’utiliser des minuscules et des tirets dans le nom, par exempleservbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2Le CLI vous guide dans la configuration du projet (choix des fonctionnalités comme l’API REST, la sérialisation, l’authentification, etc.) et la structuration de l’application. Adaptez les options selon vos besoins.
Installer les dépendances du projet
Rendez-vous dans le dossier du projet nouvellement créé et installez les dépendances Node.js :
bashcd servbay-loopback-app npm install
1
2
Modifier la réponse d’API de LoopBack (facultatif)
Pour illustrer l’accès à votre application via ServBay, vous pouvez modifier l’endpoint /ping
par défaut pour qu’il renvoie une réponse personnalisée.
Modifier le fichier
src/controllers/ping.controller.ts
Repérez le fichier
src/controllers/ping.controller.ts
dans le projet et remplacez son contenu comme suit, afin que l’API/ping
renvoie la chaîne "Hello ServBay!" :typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // Modifie le contenu de la réponse pour "Hello ServBay !" return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
Exécuter le projet en mode développement
Lors de l’étape de développement, il est courant de lancer votre serveur LoopBack en mode développement pour faciliter l’itération et le débogage. Nous accéderons à ce serveur via le proxy inversé de ServBay.
Démarrer le serveur de développement
Dans le dossier racine du projet, démarrez LoopBack via le terminal. L’application écoute généralement sur un port défini, que vous pouvez spécifier via la variable d’environnement
PORT
(ex :8585
) :bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2Une fois le serveur lancé, un message du type "Server is running at http://[::1]:8585" s’affiche dans le terminal.
Configurer un site (proxy inversé) dans ServBay
Ouvrez le panneau de contrôle ServBay et rendez-vous dans la section « Site ». Cliquez sur Ajouter pour créer un nouveau site proxy inversé, de façon à rediriger le trafic du domaine local vers le port interne utilisé par LoopBack :
- Nom (Name) : par exemple
Mon premier site LoopBack dev
(identifiant dans ServBay) - Domaine (Domain) : ex.
servbay-loopback-dev.servbay.demo
(nom local à utiliser dans le navigateur) - Type : choisissez
Proxy inversé (Reverse Proxy)
- Adresse IP : saisissez
127.0.0.1
(LoopBack tourne localement) - Port : saisissez
8585
(le port écouté par LoopBack)
Enregistrez puis appliquez la configuration. ServBay s’occupe automatiquement du DNS local (fichier
/etc/hosts
ou Utilitaire ServBay Helper) et du serveur web (Caddy ou Nginx), ce qui permet d’accéder facilement au site via le nom de domaine configuré.Pour plus de détails sur l’ajout d’un site Node.js en proxy inversé, consultez la documentation : Ajouter un site de développement Node.js.
- Nom (Name) : par exemple
Accéder à l’application en mode développement
Ouvrez votre navigateur et allez à l’adresse de votre domaine local, par exemple
https://servbay-loopback-dev.servbay.demo/ping
.ServBay configure par défaut un certificat SSL sur tous les sites locaux (via ServBay User CA ou ServBay Public CA), ce qui vous permet d’accéder en HTTPS de façon sécurisée. Cela simule les conditions d’un environnement de production, vous aidant à anticiper et corriger d’éventuels soucis liés au SSL. Pour en savoir plus sur la gestion SSL dans ServBay, référez-vous à : Sécuriser un site web avec SSL.
Déployer en mode production (optionnel)
Lorsque votre projet LoopBack est prêt à être mis en production, vous pouvez lancer le serveur en mode production afin d’obtenir de meilleures performances et de limiter la sortie des logs de débogage.
Démarrer le serveur en mode production
Depuis le dossier du projet, lancez LoopBack en mode production, en spécifiant un port (ex :
8586
) et en définissant la variable d’environnementNODE_ENV
àproduction
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2Configurer le site proxy dans ServBay
Dans le panneau de contrôle ServBay, retournez dans « Site » pour ajouter ou modifier une configuration de site proxy inversé pointant vers l’application LoopBack en mode production :
- Nom (Name) : par exemple
Mon premier site LoopBack production
- Domaine (Domain) : ex.
servbay-loopback-prod.servbay.demo
- Type : choisissez
Proxy inversé (Reverse Proxy)
- Adresse IP :
127.0.0.1
- Port :
8586
(le port utilisé en production)
Sauvegardez et appliquez la configuration.
- Nom (Name) : par exemple
Accéder à l’application en mode production
Ouvrez votre navigateur et visitez, par exemple,
https://servbay-loopback-prod.servbay.demo/ping
, pour tester l’application en mode production. Là encore, ServBay prendra en charge la gestion HTTPS automatiquement.
Se connecter à une base de données
LoopBack permet la connexion à de nombreux types de bases de données via des connecteurs adaptés. ServBay fournit des packages pour MySQL, MariaDB, PostgreSQL, MongoDB et Redis – il suffit de lancer les services souhaités via ServBay puis de les configurer dans votre projet LoopBack.
Voici quelques exemples de configuration pour des bases de données communes sous ServBay. Personnalisez-les selon vos besoins.
Important : Les identifiants utilisés dans ces exemples sont des valeurs fictives. Assurez-vous d’indiquer le mot de passe et le nom d’utilisateur réel que vous avez créé dans ServBay pour chaque base de données, via la console ServBay.
Connexion à MongoDB
Vérifiez d’abord que le package MongoDB est installé et lancé dans ServBay. Installez le connecteur LoopBack MongoDB :
bashnpm install --save @loopback/connector-mongodb
1Configurez ensuite la source de données dans le projet (par exemple dans
src/datasources/mongodb.datasource.ts
) :typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // Par défaut, le serveur MongoDB de ServBay écoute sur localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // Remplacez par le nom de votre base host: 'localhost', port: 27017, user: '', // Si vous avez activé l’authentification, indiquez l’utilisateur ici password: '', // Si vous avez activé l’authentification, indiquez le mot de passe ici database: 'servbay-loopback-app', // Remplacez par votre base de données // Autres options si nécessaire... }; 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
22Connexion à Redis
Vérifiez que Redis est bien démarré sur ServBay. Installez un connecteur Redis compatible LoopBack (notez que LoopBack n’a pas de connecteur Redis officiel sous la forme
@loopback/connector-redis
; on utilise généralementloopback-connector-redis
de la communauté ou tout package Node.js Redis combiné avec le système de services LoopBack) :bashnpm install --save loopback-connector-redis # ou tout autre package Redis compatible
1Configurez alors la source de données (exemple ci-dessous avec
loopback-connector-redis
) :typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // Par défaut, Redis sous ServBay écoute sur localhost:6379 url: 'redis://localhost:6379', // Autres options... }; 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
17Note : l’utilisation des connecteurs LoopBack 3 et 4 pour les bases de données peut différer. L’exemple ci-dessus suit le style LoopBack 3. Avec LoopBack 4, privilégiez l’utilisation du décorateur
@datasource
de@loopback/repository
et reportez-vous à la documentation officielle pour la configuration moderne. Cependant, les paramètres commehost
,port
,user
,password
,database
restent communs.Connexion à MariaDB (ou MySQL)
Vérifiez que MariaDB ou MySQL est installé et actif. Installez le connecteur LoopBack MySQL (également compatible avec MariaDB) :
bashnpm install --save @loopback/connector-mysql
1Configurez la source de données dans votre projet :
typescript// src/datasources/mariadb.datasource.ts ou mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // ou 'mysql' connector: 'mysql', // On utilise le connecteur MySQL pour les deux // url: '', // Vous pouvez utiliser une URL ou renseigner host, port, base séparément host: 'localhost', // Base en écoute sur la machine locale port: 3306, // Port par défaut MariaDB/MySQL user: 'root', // L’utilisateur par défaut de ServBay est généralement root password: 'password', // << Remplacez par le mot de passe réel de votre base dans ServBay >> database: 'servbay_loopback_app', // Remplacez par le nom de votre base // Autres options... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // ou 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Attention :
password: 'password'
dans cet exemple doit impérativement être remplacé par votre vrai mot de passe, disponible/paramétrable dans la gestion des bases ServBay.Connexion à PostgreSQL
Vérifiez que PostgreSQL est installé et lancé via ServBay. Installez le connecteur LoopBack PostgreSQL :
bashnpm install --save @loopback/connector-postgresql
1Configurez la source de données de la façon suivante :
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // Utilisez une URL ou renseignez séparément hôte, port, base host: 'localhost', // PostgreSQL tourne localement avec ServBay port: 5432, // Port par défaut user: 'user', // << À remplacer par votre identifiant PostgreSQL sous ServBay >> password: 'password', // << À remplacer par votre vrai mot de passe >> database: 'servbay_loopback_app', // Remplacez par le nom de votre base // Autres options... }; 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
21Remarque : dans l’exemple ci-dessus,
user: 'user'
etpassword: 'password'
sont des valeurs fictives. Pensez à utiliser les identifiants réels créés ou retrouvés dans la gestion des bases de ServBay.
Conclusion
Grâce à ces étapes, vous avez appris à créer, configurer et exécuter un projet Node.js LoopBack dans l’environnement local ServBay. Vous savez désormais comment utiliser la gestion des sites ServBay (proxy inversé) pour accéder à vos applications, et comment connecter LoopBack à diverses bases de données fournies par ServBay.
ServBay propose un environnement local stable et complet pour LoopBack et autres frameworks Node.js, intégrant serveur web, bases de données et multiples runtimes, ce qui simplifie grandement votre quotidien de développeur. Profitez de la gestion des sites, du support SSL et de l’intégration des bases de données pour développer et tester efficacement et en toute sécurité sur votre machine.