Creating a Server

The first thing to do is a create the OpenAPI specification file needed to describe the Composer server.

Click here for an example.

Once your spec file is complete, simply run it through the Composer CLI tool, specifying nodejs as the language and server as the type.

1composer -i ./service.yaml -o . -t server -l nodejs

In the above example we defined our schema in the file service.yaml and told Composer to generate a new project in the current directory.

Building the Server

Before you can build the server project you will need to install the project dependencies.

1yarn install

After that simply run yarn build.

1yarn build

Running the Server

All Composer projects come pre-configured to be run with Docker Compose.

1docker-compose build
2docker-compose run

Once the system is up and running you’ll see log output such as the following.

 1server_1   | 2020-05-30T23:35:10.725Z info: Registered Route: GET /
 2server_1   | 2020-05-30T23:35:10.726Z info: Registered Route: POST /acls
 3server_1   | 2020-05-30T23:35:10.726Z info: Registered Route: DELETE /acls/:id
 4server_1   | 2020-05-30T23:35:10.726Z info: Registered Route: GET /acls
 5server_1   | 2020-05-30T23:35:10.726Z info: Registered Route: GET /acls/:id
 6server_1   | 2020-05-30T23:35:10.726Z info: Registered Route: PUT /acls/:id
 7server_1   | 2020-05-30T23:35:10.729Z info: Registered Route: GET /metrics
 8server_1   | 2020-05-30T23:35:10.729Z info: Registered Route: GET /metrics/:metric
 9server_1   | 2020-05-30T23:35:10.729Z info: Scanning for routes...
10server_1   | 2020-05-30T23:35:10.741Z info: Registered Route: GET /user/login
11server_1   | 2020-05-30T23:35:10.742Z info: Registered Route: GET /user/login/user/logout
12server_1   | 2020-05-30T23:35:10.742Z info: Registered Route: GET /store/order
13server_1   | 2020-05-30T23:35:10.742Z info: Registered Route: POST /store/order
14server_1   | 2020-05-30T23:35:10.743Z info: Registered Route: GET /store/order/:id
15server_1   | 2020-05-30T23:35:10.743Z info: Registered Route: PUT /store/order/:id
16server_1   | 2020-05-30T23:35:10.743Z info: Registered Route: DELETE /store/order/:id
17server_1   | 2020-05-30T23:35:10.744Z info: Registered Route: GET /pet
18server_1   | 2020-05-30T23:35:10.744Z info: Registered Route: POST /pet
19server_1   | 2020-05-30T23:35:10.744Z info: Registered Route: DELETE /pet
20server_1   | 2020-05-30T23:35:10.744Z info: Registered Route: GET /pet/:id
21server_1   | 2020-05-30T23:35:10.744Z info: Registered Route: PUT /pet/:id
22server_1   | 2020-05-30T23:35:10.744Z info: Registered Route: DELETE /pet/:id
23server_1   | 2020-05-30T23:35:10.745Z info: Registered Route: GET /user
24server_1   | 2020-05-30T23:35:10.745Z info: Registered Route: POST /user
25server_1   | 2020-05-30T23:35:10.745Z info: Registered Route: DELETE /user
26server_1   | 2020-05-30T23:35:10.746Z info: Registered Route: GET /user/:id
27server_1   | 2020-05-30T23:35:10.746Z info: Registered Route: PUT /user/:id
28server_1   | 2020-05-30T23:35:10.746Z info: Registered Route: DELETE /user/:id
29server_1   | 2020-05-30T23:35:10.746Z info: Registered Route: GET /user/count
30server_1   | 2020-05-30T23:35:10.746Z info: Initializing routes...
31server_1   | 2020-05-30T23:35:10.778Z info: Listening on port 3000...
32server_1   | 2020-05-30T23:35:10.784Z info: Starting service MetricsCollector...