LoopBack-project opzetten en draaien met ServBay
Wat is LoopBack?
LoopBack is een krachtig, open source Node.js-framework ontwikkeld door IBM, speciaal ontworpen voor het snel bouwen van API’s en microservices. Het werkt model-gedreven (Model Driven Development, MDD), waardoor ontwikkelaars efficiënt datamodellen kunnen definiëren en automatisch robuuste RESTful API’s worden gegenereerd. Het framework biedt uitgebreide features zoals datasouce-connecties, gebruikersauthenticatie en -autorisatie, API Explorer en ondersteunt verschillende databases en protocollen.
Belangrijkste kenmerken en voordelen van LoopBack
- Model-gedreven ontwikkeling (MDD): Biedt een intuïtieve manier om datamodellen te definiëren. Het framework genereert automatisch API-eindpunten en data-validatielogica.
- Ondersteuning van meerdere datasources: Koppel eenvoudig met populaire databases zoals MongoDB, MySQL, PostgreSQL, MariaDB en ook REST- en SOAP-services.
- Krachtige CLI-tools: LoopBack CLI (Command Line Interface) biedt veel commando’s, waardoor projectinitialisatie, modeldefinitie en datasourceconfiguratie sterk worden vereenvoudigd.
- Modulair & uitbreidbaar: Flexibel ontwerp met ondersteuning voor componenten en extensies, om eenvoudig externe libraries en services te integreren voor specifieke businessbehoeften.
- Ingebouwde beveiligingsfuncties: Direct bruikbare authenticatie- en autorisatiemechanismen, zodat ontwikkelaars snel veilige API’s kunnen bouwen.
Door gebruik te maken van LoopBack kunnen ontwikkelaars veel sneller en eenvoudiger backends voor webapplicaties en API’s bouwen, én onderhoudbare, krachtige applicaties creëren.
LoopBack-project opzetten en draaien in ServBay
In deze gids laten we zien hoe je een LoopBack-project aanmaakt en draait met de Node.js-omgeving die ServBay biedt. We maken gebruik van de ‘Website’-functionaliteit in ServBay om een lokale webserver te configureren en externe verzoeken via reverse proxy door te sturen naar de poort waarop je LoopBack-app draait, zodat je het project gemakkelijk lokaal kunt openen en debuggen.
Een LoopBack-project aanmaken
Installeer de LoopBack CLI
Controleer vooraf of je Node.js al als pakket hebt geïnstalleerd en geactiveerd in ServBay. Open vervolgens je terminal en installeer de LoopBack CLI wereldwijd via npm:
bashnpm install -g @loopback/cli
1Project initialiseren
Navigeer naar de standaard hoofdmap voor websites in ServBay,
/Applications/ServBay/www
, en initialiseert een nieuw LoopBack-project met de CLI. Gebruik voor de projectnaam bij voorkeur kleine letters en koppeltekens, bijvoorbeeldservbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2De CLI begeleidt je bij het instellen van het project, zoals het selecteren van gewenste features (REST API, serialisatie, authenticatie, enz.) en het opzetten van de projectstructuur. Maak hier keuzes op basis van jouw wensen.
Projectafhankelijkheden installeren
Navigeer naar de zojuist aangemaakte projectmap en installeer de benodigde Node.js-pakketten:
bashcd servbay-loopback-app npm install
1
2
LoopBack output aanpassen (optioneel)
Om te laten zien hoe je jouw app via ServBay kunt openen, passen we het standaard /ping
-endpoint aan zodat deze een gepersonaliseerd antwoord teruggeeft.
Pas het bestand
src/controllers/ping.controller.ts
aanOpen het bestand
src/controllers/ping.controller.ts
in je project en wijzig de inhoud als volgt. Hierdoor geeft het/ping
-endpoint de tekst "Hello ServBay!" terug:typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // Pas de returnwaarde aan naar "Hello ServBay!" return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
Project draaien in de ontwikkelmodus
Tijdens het ontwikkelen draai je doorgaans de ingebouwde ontwikkelserver van je LoopBack-app voor snelle iteratie en debugging. Met ServBay kun je deze via reverse proxy benaderen.
Ontwikkelserver starten
Start je LoopBack-app in de hoofdmap van het project via de terminal. Deze luistert standaard op een poort. Stel de omgevingsvariabele
PORT
in, bijvoorbeeld poort8585
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2Na het starten zie je in de terminal een melding in de trant van "Server is running at http://[::1]:8585".
ServBay-website (reverse proxy) configureren
Open het ServBay-configuratiescherm, ga naar het tabblad ‘Website’. Druk op de knop voor toevoegen en maak een nieuwe reverse proxy-website aan. Hiermee worden inkomende domein-/poortverzoeken doorgegeven aan het interne adres van je LoopBack-app:
- Naam (Name): Bijvoorbeeld
Mijn eerste LoopBack dev site
(naam binnen ServBay) - Domein (Domain): Bijvoorbeeld
servbay-loopback-dev.servbay.demo
(het lokale domein dat je in je browser gebruikt) - Type (Type): Kies
Reverse Proxy
- IP-adres (IP Address): Geef
127.0.0.1
op (je app draait lokaal) - Poort (Port): Gebruik
8585
(de poort waarop je app luistert)
Sla de instellingen op en pas de wijzigingen toe in ServBay. ServBay past vervolgens automatisch de lokale DNS aan (via het
/etc/hosts
-bestand of met ServBay Helper Tool) en (Caddy of Nginx) webserver, zodat je via het opgegeven domein toegang hebt.Zie voor meer informatie over het toevoegen van een Node.js-website als reverse proxy in ServBay de documentatie: Node.js ontwikkelwebsite toevoegen.
- Naam (Name): Bijvoorbeeld
Toegang tot de ontwikkelomgeving
Open je browser en ga naar je ingestelde domein en API-endpoint, bijvoorbeeld
https://servbay-loopback-dev.servbay.demo/ping
.Aangezien ServBay standaard automatisch SSL-certificaten aanmaakt voor lokale websites (via ServBay User CA of ServBay Public CA), kun je direct via HTTPS veilig je lokale omgeving benaderen. Hiermee kun je alvast SSL-gerelateerde problemen in productie nabootsen en opsporen. Zie voor meer informatie over SSL: SSL-beveiliging voor je website.
Productieversie uitrollen (optioneel)
Zodra je LoopBack-project klaar is voor productie, draait je applicatie doorgaans in ‘production mode’, met betere performance en minder debugoutput.
Productieserver starten
Start je LoopBack-app in de hoofdmap van het project via de terminal, in production mode. Stel een andere poort in, bijvoorbeeld
8586
, en zet de omgevingsvariabeleNODE_ENV
opproduction
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2ServBay-website (reverse proxy) configureren
Ga opnieuw naar het ‘Website’-tabblad van het ServBay-configuratiescherm en voeg een omgekeerde proxywebsite toe of wijzig deze, zodat deze verwijst naar je LoopBack-app in de productieomgeving:
- Naam (Name): Bijvoorbeeld
Mijn eerste LoopBack productie site
- Domein (Domain): Bijvoorbeeld
servbay-loopback-prod.servbay.demo
- Type (Type): Kies
Reverse Proxy
- IP-adres (IP Address):
127.0.0.1
- Poort (Port):
8586
(de poort van de productie-app)
Sla de wijzigingen op en voer ze door.
- Naam (Name): Bijvoorbeeld
Toegang tot de productieomgeving
Navigeer in je browser naar het productie-domein, bijvoorbeeld
https://servbay-loopback-prod.servbay.demo/ping
, om te controleren of de productieversie goed draait. Ook hier verzorgt ServBay automatisch HTTPS.
Databaseverbindingen leggen
Het LoopBack-framework ondersteunt meerdere databases via connectoren. ServBay levert pakketten voor MySQL, MariaDB, PostgreSQL, MongoDB en Redis. Je start eenvoudig deze databases in ServBay, waarna je ze in je LoopBack-project configureert.
Hieronder vind je voorbeeldconfiguraties voor het koppelen met de meest gebruikte databases in ServBay. Pas de voorbeelden aan naar eigen situatie.
Let op: De gebruikersnamen en wachtwoorden in onderstaande voorbeelden zijn slechts placeholders. Vul hier altijd het root-wachtwoord of de juiste gebruiker/wachtwoordcombinatie in zoals ingesteld in ServBay. Je beheert databasegebruikers en -wachtwoorden eenvoudig via het ServBay-configuratiescherm.
Verbinding maken met MongoDB
Zorg dat je het MongoDB-pakket in ServBay hebt geïnstalleerd en gestart. Installeer de MongoDB-connector voor LoopBack:
bashnpm install --save @loopback/connector-mongodb
1Voeg de datasource-configuratie toe in je project (doorgaans in
src/datasources/mongodb.datasource.ts
of een gelijksoortig bestand):typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // ServBay MongoDB draait standaard op localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // Vervang door je databasenaam host: 'localhost', port: 27017, user: '', // Vul in als authenticatie vereist is password: '', // Vul in als authenticatie vereist is database: 'servbay-loopback-app', // Vervang door je databasenaam // Overige opties... }; 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
22Verbinding maken met Redis
Controleer of het Redis-pakket in ServBay is geïnstalleerd en gestart. Installeer een Redis-connector voor LoopBack (let op: LoopBack biedt niet standaard een eigen
@loopback/connector-redis
; gebruik bijvoorbeeld het communitypakketloopback-connector-redis
of direct de Node.jsredis
-library):bashnpm install --save loopback-connector-redis # Of een andere compatibele Redis-library
1Stel de datasource in je project in (voorbeeld met
loopback-connector-redis
):typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // ServBay Redis draait standaard op localhost:6379 url: 'redis://localhost:6379', // Overige opties... }; 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
17Let op: LoopBack 4 verschilt deels van LoopBack 3 in het aanmaken van datasources. De voorbeelden gaan uit van een gestroomlijnde aanpak volgens LoopBack 3, maar volg voor LoopBack 4 bij voorkeur de officiële documentatie en maak gebruik van de moderne configuratiemethoden zoals de
@datasource
decorator uit@loopback/repository
. De connectieparametershost
,port
,user
,password
,database
blijven echter universeel.Verbinding maken met MariaDB (of MySQL)
Controleer of je MariaDB- of MySQL-pakket is geïnstalleerd en gestart. Beide worden ondersteund in ServBay en de MySQL-connector werkt voor beide databases. Installeer de MySQL-connector voor LoopBack:
bashnpm install --save @loopback/connector-mysql
1Stel vervolgens de datasource in:
typescript// src/datasources/mariadb.datasource.ts of mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // Of 'mysql' connector: 'mysql', // Gebruik de mysql-connector // url: '', // Gebruik optioneel een url of los host/port/db host: 'localhost', // Standaard draait ServBay lokaal port: 3306, // Standaardpoorten MariaDB/MySQL user: 'root', // Standaardgebruiker ServBay is doorgaans root password: 'password', // << Vervang dit door het ingestelde password in ServBay >> database: 'servbay_loopback_app', // Vervang door je eigen db-naam // Overige opties... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // Of 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Let op: De vermelde
password: 'password'
is slechts een voorbeeld. Controleer in het databasegedeelte van het ServBay-configuratiescherm wat het actuele root-password is en voer dat hier in.Verbinding maken met PostgreSQL
Zorg dat het PostgreSQL-pakket is geïnstalleerd en gestart in ServBay. Installeer de PostgreSQL-connector voor LoopBack:
bashnpm install --save @loopback/connector-postgresql
1Stel de datasource vervolgens in:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // Kan via url of losse settings host: 'localhost', // ServBay PostgreSQL draait lokaal port: 5432, // Standaardpoort PostgreSQL user: 'user', // << Vervang door de gebruiker ingesteld binnen ServBay >> password: 'password', // << Vervang door het juiste wachtwoord ingesteld in ServBay >> database: 'servbay_loopback_app', // Je databasenaam // Overige opties... }; 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
21Let op:
user: 'user'
enpassword: 'password'
zijn placeholders. Haal de juiste gebruikersnaam en wachtwoord uit het ServBay-configuratiescherm en vul die hier in.
Samenvatting
Met bovenstaande stappen heb je succesvol een LoopBack Node.js-project opgezet, geconfigureerd en uitgevoerd in de lokale ServBay ontwikkelomgeving. Je hebt geleerd hoe je via de Website-functionaliteit van ServBay en reverse proxy toegang krijgt tot je app, en deze laat verbinden met verschillende databases die ServBay ondersteunt.
ServBay biedt een stabiele, gebruiksvriendelijke lokale omgeving voor Node.js-frameworks zoals LoopBack, compleet met geïntegreerde webserver, databases en meerdere runtime-talen. Dankzij ServBay’s websitebeheer, SSL-ondersteuning en database-integratie, ontwikkel en test je sneller én veiliger lokaal.