angular-nest-grpc
Example full-stack Typescript project using:
- Angular 9.1.x
- NestJS 7.0.x
- Protocol Buffers 3.12.x
- Envoy Proxy 1.14.x
Installation
Install dependencies using:
docker-compose build
Usage
Run backend, frontend and proxy together using:
docker-compose up
Access the Nest gRPC microservice at:
http://localhost:50051/
Access the Envoy Proxy at:
http://localhost:8080/
View the Angular frontend at:
http://localhost:4200/
Protocol Buffers
If you update backend .proto files, then you will need to recompile them to frontend services using:
cd frontend
npm run compile
You can find out more information about gRPC requests and generated client-side code here:
https://github.com/improbable-eng/grpc-web/blob/master/client/grpc-web/docs/code-generation.md
Exploring and testing endpoints
Install grpc_cli using:
npm install -g grpcc
Then view the endpoints using:
grpcc -i --proto ./backend/src/hero/hero.proto --address localhost:50051
// call grpc methods
client.getHeroes({}, printReply)
client.getHeroById({ id: 1 }, printReply)
// call streaming methods
var call = client.getHeroesStream().on('data', streamReply).on('status', streamReply); call.write({});
var call = client.getHeroByIdStream().on('data', streamReply).on('status', streamReply); call.write({ id: 1 });
Test the regular HTTP REST api at:
http://localhost:3001/hero
http://localhost:3001/hero/1
Directory structure
/backend --> Backend source files
/frontend --> Frontend sources files
Contact
For more information please contact kmturley