いつもお世話になっております。
毎度、新しいことを初めては壁にぶち当たっております。
お知恵をお借りできればと思いますのでよろしくお願いします。
前提・実現したいこと
go言語でgRPCサーバーを使ってAPIを作成しているのですが、サンプルを試してみて動いたのですが複数作った場合の実装で本当にこれでいいのか?となっているのでご教授いただければと
発生している問題・試したこと
サンプルにあったprotoファイルを複製、改変し2つめのAPIを作成
1.importにて読み込み
2.関数を追加
3.サービスを起動
以下サンプル改変後のソースです
Go
1package main 2 3import ( 4 "context" 5 "log" 6 "net" 7 8 "google.golang.org/grpc" 9 pb "google.golang.org/grpc/examples/helloworld/helloworld" 10 pb2 "google.golang.org/grpc/examples/helloworld/helloworldTest" 11 "google.golang.org/grpc/reflection" 12) 13 14const ( 15 port = ":50051" 16) 17 18// server is used to implement helloworld.GreeterServer. 19type server struct{} 20 21// SayHello implements helloworld.GreeterServer 22func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { 23 return &pb.HelloReply{Message: "Hello " + in.Name}, nil 24} 25 26// SayHello implements helloworld.GreeterServer 27func (s *server) SayHelloTest(ctx context.Context, in *pb2.HelloRequest) (*pb2.HelloReply, error) { 28 return &pb2.HelloReply{Message: "Sum is ", Sum: in.V + in.V1}, nil 29} 30 31func main() { 32 lis, err := net.Listen("tcp", port) 33 if err != nil { 34 log.Fatalf("failed to listen: %v", err) 35 } 36 s := grpc.NewServer() 37 pb.RegisterGreeterServer(s, &server{}) 38 39 pb2.RegisterGreeterServer(s, &server{}) 40 // Register reflection service on gRPC server. 41 reflection.Register(s) 42 if err := s.Serve(lis); err != nil { 43 log.Fatalf("failed to serve: %v", err) 44 } 45}
protoファイルを作成、関数を追加するのは当然として1,2をAPIごとに行うのはどうかと思っています。
毎回、それぞれ別の名前でimportをしてサービスを立てる必要があるのでしょうか?
gRPC、Goともに初心者でして良い方法があるのかこうするしかないのか判断できていない状況です。
また、必要だったとしてももう少し人為的ミスの少なくなる記述の仕方があればご教授いただければと
何卒、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/21 06:16 編集