This example illustrates microservice chaining / proxying where one microservice uses another microservice as part of its implementation.
This package defined two services:
- PublicHelloService: which defines a simple
/hello
endpoint that delegates to our PrivateHelloService - PrivateHelloService: which defines a simple
/hello
endpoint that returns{ msg: "Hello world!" }
Flow
Client PublicHelloService PrivateHelloService
|
| GET /hello
| ---------------------------> /hello
| GET /hello
| -----------------------------> /hello
|
200: { msg: "Hello world!" } |
<----------------------------------|
|
200: { msg: "Hello world!" } |
|<--------------------------------|
We encourage you to clone the git repository so you can play around with the code.
$ git clone -b carbon-0.7 git@github.com:carbon-io-examples/example__hello-world-service-chaining.git
$ cd example__hello-world-service-chaining
$ npm install
Start the private service:
$ node lib/PrivateHelloService
Start the public service (order does not matter):
$ node lib/PublicHelloService
For cmdline help:
$ node lib/PublicHelloService -h
or
$ node lib/PrivateHelloService -h
To access the /hello
endpoint on the public service:
$ curl localhost:8888/hello
{ msg: "Hello world!" }
This example comes with a simple unit test written in Carbon.io's test framework called TestTube. It is located in the test
directory.
$ node test/HelloServiceTest
or
$ npm test
To generate documentation using aglio, install it as a devDependency:
$ npm install -D --no-optional aglio
Using --no-optional
speeds up aglio's install time significantly. Then generate the docs using these commands:
$ node lib/PrivateHelloService gen-static-docs --flavor aglio --out docs/private-api.html
$ node lib/PublicHelloService gen-static-docs --flavor aglio --out docs/public-api.html
View current documentation