Tip: Missing instructions for your LoopBack 3 use case? Please report a Migration docs issue on GitHub to let us know.
Migrating from LoopBack version 3 to version 4 is a big task because so many things have changed between the versions. To make this process easier, we implemented a feature allowing users to run their existing LoopBack 3 application as a component of the new LoopBack 4 project.
By adding your application this way, the application’s REST API is included in the OpenAPI spec provided by the LoopBack 4 application. This also means that the LoopBack 3 application’s models can be used with the LoopBack 4 REST API Explorer.
Mounting the LoopBack 3 Application in a LoopBack 4 Project
Note:
If you are not familiar with LoopBack 4, visit Getting started for an introduction.
Follow this tutorial that goes through the full steps to mount your application.
To see an example of a mounted application, see lb3-application which mounts the CoffeeShop example, built from LoopBack 3, in a LoopBack 4 project.
Warning:
An important thing to note is that LoopBack 3 applications produce Swagger
(OpenAPI version 2), whereas LoopBack 4 produces OpenAPI version 3.
Lb3AppBooterComponent
converts the Swagger spec from the mounted LoopBack 3
application to OpenAPI v3 and adds it to the LoopBack 4 project’s OpenAPI v3
spec.
Scaffolded LoopBack 4 apps come with a migrate
npm script, which can be run
using npm run migrate
. This command will migrate all the LoopBack 3 models
along with the LoopBack 4 models.
Options
Lb3AppBooterComponent
comes with the option to either mount the full LoopBack 3 application or only
the rest routes. Default mode
is the full application (fullApp
).
this.bootOptions = {
lb3app: {
// only REST routes are mounted
mode: 'restRouter',
},
};
To change the path where the main LoopBack 3 application server file is stored,
you can modify the path
. Default path
is ../lb3app/server/server
.
this.bootOptions = {
lb3app: {
// server file is found under this path
path: '../coffee-shop/server/server',
},
};
Finally, you can modify the restApiRoot
when only mounting the rest router of
your LoopBack 3 application. Default is restApiRoot
is /api
.
this.bootOptions = {
lb3app: {
mode: 'restRouter',
restApiRoot: '/coffees',
},
};