Loopback: easy-peasy it's ready to serve APIs
How can we take less effort to build an API?
Not only keeping data, Data Engineers can control data output to customers. I had many chances to allow other developer teams to integrate out data via API and here is the time to talk about creating the APIs.
How can we take less effort to build an API. There is a tool I have experienced with to do so with not much energy as cost.
Credit: https://loopback.io
Loopback is a NodeJS framework to build API endpoints at ease. Now it’s version 4 with various features affording us to create an API in an easy way, How easy? Let’s go.
1. Start from Docker
1
2
3
docker pull node:14-alpine3.10
docker run -it -d -p 3000:3000 – name node_lb node:14-alpine3.10 node
docker exec -it node_lb /bin/sh
We are pulling an image node:14-alpine3.10
since Loopback version 4 can support up to NodeJS version 14. Newer versions are not yet now.
Then run -it
to create a container named “node_lb” with the port 3000 for Loopback services. And node at the last is to run the entry point.
Finally exec -it
to go inside and install Loopback package.
2. Install Loopback
Refer to the official doc, install Loopback package as the following commands.
1
2
npm i -g @loopback/cli
lb4 app
After lb4 app
, we have to write the information of the app. In this time we put “test” and select all default values. Now the folder “/test” is created.
1
2
cd test
npm start
run npm start
inside the app folder.
Yes, we got it. Open a browser and enter http://localhost:3000 and we can see this.
Click the link of the API Explorer in order to view the swagger or the API contents. It’s done!
3. Connect to a database
Let’s say we have this table “test_students” in MySQL server. How can we handle this data from the Loopback?
3.1 create Loopback datasource
run lb4 datasource
and it’s prompted to put information of other databases. Of course, we need to connect to MySQL.
3.2 create Loopback model
A model is an object of the API data. Create a model by the command lb4 model
.
Noted that we are creating an object with ID, therefore the model base class has to be “Entity”.
Now we have “TestStudents” model with a number “id” and a string “name”. The fields are matched to the MySQL table.
3.3 create Loopback Repository
Repository is a pair of datasource and model to handle the data from/to a database. Run lb4 repository
and select the values we desire.
3.4 create Loopback Controller
The last one, run lb4 controller
to create a controller which is for handle actions of the APIs such as showing values or updating values into the databases.
Select “REST Controller with CRUD functions” in order to build CRUD methods of this table.
3.5 Execute it
Try npm start
and play around. An error “ER_NO_SUCH_TABLE” appeared. What’s going on?
From the error, we noticed the datasource is “TestStudents” from Loopback’s automatic renaming that is not matched to the actual table “test_students”. The solution is adding an attribute “name” like this below in the model file, “test/src/model/model_name.model.ts”.
1
@model ({ name: 'real_tablename' })
Again, npm start
to find it works. We can fetch data in MySQL via our API. Yeah!
Loopback is so easy to build an API. Moreover, we can add other functions or libraries of NodeJS to control security, stylings, optimizations, or etc. as we needed.