使用 dotnet-grpc-cli 呼叫 gRPC Service

之前筆記 使用grpcurl 呼叫gRPC Service 紀錄到 grpcurl (curl for grpc) 的使用方式,最近在查其他資料時這才發現原來 gRPC 官方也有提供:grpc-cli,想不到我如此後知後覺!當然要立馬測試、紀錄,以茲驚惕

基本環境設定

  1. macOS Catalina 10.15.6
  2. docker desktop community 2.3.0.4(46911)
  3. grpc 1.31.1

安裝與使用

  1. 安裝方式

    brew tap grpc/grpc
    brew install grpc
    
  2. 使用方式

    • 取得所有 service

      • 語法

        grpc_cli ls {grpc server endpoint}
        
      • 範例

        grpc_cli ls localhost:5000
        

        1lsservice

    • 取得指定 service 詳細資訊

      • 語法

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

        grpc_cli ls localhost:5000 greet.Greeter -l
        

        2lsservicel

    • 取得指定 method 詳細資訊

      • 語法

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

        grpc_cli ls localhost:5000 greet.Greeter.SayHello -l
        

        3lsmethod

    • 取得指定 message type 詳細資訊

      • 語法

        grpc_cli type {grpc server endpoint} {message type name}
        
      • 範例

        grpc_cli type localhost:5000 greet.HelloRequest
        

        4lsmessagetype

    • 呼叫指定 method

      • 語法

        grpc_cli call {grpc server endpoint} {service.mathod name} {request message}
        
      • 範例

        grpc_cli call localhost:5000 SayHello "name: 'gRPC CLI'"
        

        5call

心得

初步使用起來,在啟用 Reflection 下個人覺得比 grpcurl 來得便利:可以直接從 grpc server 端就能取得完整 service、method、request message 內容,只是前提是必需啟用 Reflection,如果未啟用 Reflection 就連基本的 method call 都會有問題

6error

參考資訊

  1. 使用grpcurl 呼叫gRPC Service
  2. brew grpc
  3. homebrew-grpc
  4. grpc/doc/command_line_tool.md