使用 dotnet-grpc-cli 取得 gRPC Service 內容

之前筆記 使用 grpc-cli 呼叫 gRPC Service 紀錄到 gprc 官方 command line tool 的使用方式,後來偶爾間發現竟然有 dotnet 版:dotnet-grpc-cli,還是 C# 撰寫的,立馬來嘗試看看囉

基本環境設定

  1. macOS Catalina 10.15.6
  2. docker desktop community 2.3.0.4(46911)
  3. dotnet-grpc-cli 0.2.0

安裝與使用

  1. 安裝方式

    dotnet tool install -g dotnet-grpc-cli
    
  2. 使用方式

    • 取得所有 service

      • 語法

        dotnet grpc-cli ls {grpc server endpoint}
        
      • 範例

        dotnet grpc-cli ls http://localhost:5000
        

        1ls

    • 取得指定 service 詳細資訊

      • 語法

        dotnet grpc-cli ls {grpc server endpoint} {service name} -l
        
      • 範例

        dotnet grpc-cli ls http://localhost:5000 greet.Greeter -l
        

        2lsservice

    • 取得指定 method 詳細資訊

      • 語法

        dotnet grpc-cli ls {grpc server endpoint} {service.method name} -l
        
      • 範例

        dotnet grpc-cli ls http://localhost:5000 greet.Greeter.SayHello -l
        

        3lsmethod

    • 以 proto 格式取得 service

      • 語法

        dotnet grpc-cli dump {grpc server endpoint} {service.method name}
        
      • 範例

        dotnet grpc-cli dump http://localhost:5000 greet.Greeter.SayHello
        

        4dump

心得

dotnet-grpc-cli 與 grpc-cli

減少了:

  1. 取得指定 message type 詳細資訊
  2. 呼叫指定 method

增加了:

  • Dump service in proto format
  • 需要指明確指定 endpoint protocal

相同的是在沒有啟用 Reflection 下一樣無用武之地,只是錯誤不太一樣

5error

除此之外,個人覺得 dotnet-grpc-cli 少了直接呼叫 grpc method 的方法,功能只是為了取得 grpc service 與 method 定義,在使用上太侷限了

參考資訊

  1. 使用 grpc-cli 呼叫 gRPC Service
  2. dotnet-grpc-cli
  3. mholo65/dotnet-grpc-cli