Skip to content

Commit d5e2879

Browse files
Merge pull request #12899 from jtimmons/feat/grpc-reflection
feat(microservices): add support for grpc reflection api
2 parents 7fe7b59 + f0baed7 commit d5e2879

File tree

5 files changed

+42
-6
lines changed

5 files changed

+42
-6
lines changed

packages/microservices/interfaces/microservice-configuration.interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export interface GrpcOptions {
6666
protoLoader?: string;
6767
packageDefinition?: any;
6868
gracefulShutdown?: boolean;
69+
onLoadPackageDefinition?: (pkg: any, server: any) => void;
6970
loader?: {
7071
keepCase?: boolean;
7172
alternateCommentMode?: boolean;

packages/microservices/server/server-grpc.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,14 @@ export class ServerGrpc extends Server implements CustomTransportStrategy {
498498
this.options,
499499
grpcProtoLoaderPackage,
500500
);
501+
502+
if (this.options.onLoadPackageDefinition) {
503+
this.options.onLoadPackageDefinition(
504+
packageDefinition,
505+
this.grpcClient,
506+
);
507+
}
508+
501509
return grpcPackage.loadPackageDefinition(packageDefinition);
502510
} catch (err) {
503511
const invalidProtoError = new InvalidProtoDefinitionException(err.path);

sample/04-grpc/package-lock.json

Lines changed: 28 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sample/04-grpc/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
},
2121
"dependencies": {
2222
"@grpc/grpc-js": "1.10.0",
23+
"@grpc/reflection": "1.0.3",
2324
"@nestjs/common": "10.3.2",
2425
"@nestjs/core": "10.3.2",
2526
"@nestjs/microservices": "10.3.2",

sample/04-grpc/src/grpc-client.options.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { ReflectionService } from '@grpc/reflection';
12
import { ClientOptions, Transport } from '@nestjs/microservices';
23
import { join } from 'path';
34

@@ -6,5 +7,8 @@ export const grpcClientOptions: ClientOptions = {
67
options: {
78
package: 'hero', // ['hero', 'hero2']
89
protoPath: join(__dirname, './hero/hero.proto'), // ['./hero/hero.proto', './hero/hero2.proto']
10+
onLoadPackageDefinition: (pkg, server) => {
11+
new ReflectionService(pkg).addToServer(server);
12+
},
913
},
1014
};

0 commit comments

Comments
 (0)