loopback-connector-grpc
The gRPC connector enables LoopBack applications to interact with gRPC services.
Installation
In your application root directory, enter:
$ npm install loopback-connector-grpc --save
This will install the module from npm and add it as a dependency to the application's package.json
file.
Configuration
To interact with a gRPC API, configure a data source backed by the gRPC connector:
With code:
var ds = loopback;
With JSON in datasources.json
(for example, with basic authentication):
"gRPCDataSource": {
"name": "gRPCDataSource",
"connector": "grpc",
"spec": "note.proto",
"security": {
"type" : "basic",
"username": "the user name",
"password": "thepassword"
}
Data source properties
Specify the options for the data source with the following properties.
Property | Description | Default |
---|---|---|
connector | Must be 'loopback-connector-grpc' to specify gRPC connector |
None |
spec | HTTP URL or path to the gRPC specification file (with file name extension .yaml/.yml or .json ). File path must be relative to current working directory (process.cwd() ). |
None |
validate | When true , validates provided spec against gRPC specification 2.0 before initializing a data source. |
false |
security | Security configuration for making authenticated requests to the API. | None |
Authentication
Basic authentication:
security: rootCerts: 'rootCerts.crt' // Path to root certs key: 'gprc.key' // Path to client SSL private key cert: 'grpc.crt' // Path to client SSL certificate
Creating a model from the gRPC data source
The gRPC connector loads the API specification document asynchronously. As a result, the data source won't be ready to create models until it is connected. For best results, use an event handler for the connected
event of data source:
ds;
Once the model is created, all available gRPC API operations can be accessed as model methods, for example:
...PetService;
The model methods can also be called as promises:
PetService;// in async/await flavorconst res = await PetService;
Extend a model to wrap/mediate API Operations
Once you define the model, you can wrap or mediate it to define new methods. The following example simplifies the getPetById
operation to a method that takes petID
and returns a Pet instance.
PetService{ PetService;};
This custom method on the PetService
model can be exposed as REST API end-point. It uses loopback.remoteMethod
to define the mappings:
PetService;
Example
Coming soon...