Я использую учебный проект NestJS gRPC:
https://github.com/nestjs/nest/blob/master/sample/04-grpc/
hero.proto содержимое файла:
syntax = "proto3";
package hero;
service HeroService {
rpc FindOne (HeroById) returns (Hero) {}
}
message HeroById {
int32 id = 1;
}
message Hero {
int32 id = 1;
string name = 2;
}
Отчто я понимаю, определяет путь как:
/hero.HeroService/FindOne
hero.controller.ts содержание:
@Controller()
export class HeroController implements OnModuleInit {
@GrpcMethod('HeroService')
findOne(data: HeroById): Hero {
const items: Hero[] = [{ id: 1, name: 'John' }, { id: 2, name: 'Doe' }];
return items.find(({ id }) => id === data.id);
}
}
Теоретически, который должен представлять метод на:
http://localhost:3001/hero.HeroService/FindOne
Но при вызове выдает эту ошибку:
Ошибка: сообщение «Не найдено»: «Cannot POST /hero.HeroService/FindOne» statusCode: 404
Я знаю, что бью NestJS, потому что у меня есть промежуточное программное обеспечение.Если я нажимаю GET-маршрут, он работает и возвращает правильные данные, но GRPC-маршруты - все 404.Чего мне не хватает?
Я попытался @Controller('hero')
вместо того, чтобы попробовать префикс пути.Кажется, нелегко заставить NestJS выйти из всех конечных точек gRPC для отладки ...
Полный исходный код проекта находится здесь:
https://github.com/kmturley/angular-nest-grpc
------ ОБНОВЛЕНИЕ -------
Установил grpc_cli с помощью:
brew tap grpc/grpc
brew install --with-plugins grpc
Затем попытался просмотреть конечные точки с помощью:
export GRPC_VERBOSITY=DEBUG
grpc_cli ls localhost:3001
И получил ошибку:
Получил ошибку при запросе конечной точки службы.
Или с помощью:
grpc_cli call localhost:3001 FindOne "id: 1" --protofiles=src/hero/hero.proto
Я получаю ошибку:
ServerReflectionInfo rpc failed. Error code: 14, details: OS Error