Creating a Server¶
The first thing to do is a create the OpenAPI specification file needed to describe the Composer server.
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...