diff --git a/.env.template b/.env.template index 5608259..5bebd96 100644 --- a/.env.template +++ b/.env.template @@ -2,4 +2,5 @@ # Below all environment variables and default values GRPC_PORT=50051 +GRPC_ENABLE_REFLECTION=false LOG_LEVEL=info diff --git a/README.md b/README.md index 9eb55b8..7ae8b36 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,9 @@ And setup env vars according to your needs. ## Configuration ```bash -GRPC_PORT=50051 # gRPC server port -LOG_LEVEL=info # logging severity (debug, info, warn, error) +GRPC_PORT=50051 # gRPC server port +GRPC_ENABLE_REFLECTION=false # whether to enable gRPC reflection or not +LOG_LEVEL=info # logging severity (debug, info, warn, error) ``` ## Running diff --git a/internal/config/config.go b/internal/config/config.go index e9b2aa1..2059afb 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -9,8 +9,9 @@ import ( ) type Config struct { - GRPCPort int - LogLevel string + GRPCPort int + GRPCEnableReflection bool + LogLevel string } func Load() (*Config, error) { @@ -27,6 +28,13 @@ func Load() (*Config, error) { } config.GRPCPort = port + enableReflectionStr := getEnv("GRPC_ENABLE_REFLECTION", "false") + enableReflection, err := strconv.ParseBool(enableReflectionStr) + if err != nil { + return nil, err + } + config.GRPCEnableReflection = enableReflection + config.LogLevel = getEnv("LOG_LEVEL", "info") return config, nil diff --git a/internal/server/server.go b/internal/server/server.go index ae35ccc..1a57181 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -12,6 +12,7 @@ import ( pb "orderservice/pkg/api/order" "google.golang.org/grpc" + "google.golang.org/grpc/reflection" ) type Server struct { @@ -36,6 +37,11 @@ func New(cfg *config.Config) *Server { func (s *Server) RegisterServices() { orderService := service.NewOrderServiceServer() pb.RegisterOrderServiceServer(s.grpcServer, orderService) + + if s.config.GRPCEnableReflection { + reflection.Register(s.grpcServer) + log.Println("gRPC server will start with reflection") + } } func (s *Server) Start() error {